仅当前一个度量值成员满足特定条件时才显示行



考虑 MDX 中的某些查询

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

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

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函数获得了前一年。我还替换了你的[销售日期]。[年]。具有 [销售日期] 的成员。[年]。孩子。 这将删除您可能不希望返回的 ALL 成员。

注意:尽管 Iif 是理解如何执行此操作的最简单方法,但传统上它有点慢(尽管 SQL Server 的 2008 和 2012 版本提高了性能)。这个可能不会太糟糕,但一般来说,您可以使用 scope 将 iif 函数替换为脚本以获得更好的性能。

最新更新