Search code examples
ssasmdx

MDX subtract measures across dimensions


WITH 
  MEMBER CostDifference AS 
    Sum([Measures].[ExtendedCost]) - [Measures].[ExtendedCost] 
SELECT 
  NON EMPTY 
    {
      [Measures].[ExtendedCost]     
     ,CostDifference
    } ON COLUMNS
 ,NON EMPTY 
    {[Parts].[ItemDesc].MEMBERS, [Dim Date].[DateUK].MEMBERS} ON ROWS
FROM [Cube]

I'm trying to subtract a measures across different dimensions i.e. for 2 date snapshots (31/1/2010 and 28/2/2010) for all the products in DimParts

if I remove this piece of code from equation then all I get is zeros [Dim Date].[DateUK].MEMBERS

If I use a cross join to add more than one dim even then the cost difference is zero

e.g. ,NON EMPTY CrossJoin ( [Parts].[ItemDesc].MEMBERS ,{[Dim Date].[DateUK]} ) ON ROWS

I'm using SQl Server 2008R2

What am I missing here.


Solution

  • This Sum([Measures].[ExtendedCost]) - [Measures].[ExtendedCost] Will resolve to this

    [Measures].[ExtendedCost] - [Measures].[ExtendedCost] 
    

    Which is always 0

    If this Sum([Measures].[ExtendedCost]) needs to be across a complete set then you need to include that set:

    Sum(
      [Dim Date].[DateUK].MEMBERS
     ,[Measures].[ExtendedCost]
    )