仅在先前度量成员满足特定条件时显示行

时间:2014-01-18 19:45:35

标签: sql-server mdx

考虑MDX中的某些查询

SELECT NON EMPTY {[Measures].[Income]} ON COLUMNS,
{
            SellDate.[year].Members
} ON ROWS
FROM [HD Kawiarnia]

显示每年公司的收入。问题是如何只显示今年的收入高于去年的收入?

1 个答案:

答案 0 :(得分:1)

WITH MEMBER [Measures].[MyMeasure] as 
IIF(
([Measures].[Income], [SellDate].[Year].currentmember) 
     <= ([Measures].[Income], [SellDate].[Year].CURRENTMEMBER.PREVMEMBER) 
, NULL, 
[Measures].[Income])

SELECT NON EMPTY {[Measures].[Income]} on COLUMNS
NON EMPTY {[SellDate].[Year].CHILDREN} on ROWS
FROM 
[HD Kawiarnia]

我使用IIF函数来评估该子句,如果前一年收入较高,则返回null。我在前一年使用PREVMEMBER函数。我还用[SellDate]替换了你的[SellDate]。[Year] .MEMBERS。[Year] .CHILDREN。这将删除您可能不想返回的ALL成员。

提醒:尽管Iif是了解如何执行此操作的最简单方法,但它传统上有点慢(尽管在2008和2012版本的SQL Server中性能有所提高)。这个可能不会太糟糕,但一般来说,您可以替换iif functions with scripting using scope以获得更好的性能。