如何使用EXCEPT功能随时间显示丢弃的数据?

时间:2012-08-01 19:41:44

标签: mdx except

我希望过滤超过特定金额的帐户余额,例如1,000,并且仅显示在选定时间内超过1,000的帐户,并且与第二个选定时间相比已被删除。因此,如果'Amy'在'六月'的选定月份中超过1,000,现在她的余额低于1,000,我希望看到她列出新的余额。

    select [Measures].[Amount] on 0,
      FILTER( [Instrument].[Account Num].MEMBERS, [Measures].[Committed Amt]>1000) 
    ON 1  
    from [TEST]
   where
except({[Time].[Calendar Year].[Month].&[06]&[2012]}, 
   {[Time].[Calendar Year].  [Month].&[07]&[2012]});

使用上面的代码,我可以过滤一定数量的余额。我无法只显示丢失的记录,这是我试图通过使用EXCEPT功能。有任何想法吗?这是使用2008 Analysis Server的MDX代码

2 个答案:

答案 0 :(得分:0)

您只需将7月放入Where子句并在过滤器中使用此条件:

([Measures].[Committed Amt], [Time].[Calendar Year].[Month].&[06]&[2012]) > 1000 AND [Measures].[Committed Amt] < 1000

查询变为:

SELECT [Measures].[Amount] ON 0,
FILTER( [Instrument].[Account Num].MEMBERS, ([Measures].[Committed Amt], [Time].[Calendar Year].[Month].&[06]&[2012]) > 1000 AND ([Measures].[Committed Amt] < 1000, [Time].[Calendar Year].[Month].&[07]&[2012])) ON 1  
FROM [TEST]
WHERE ([Time].[Calendar Year].[Month].&[07]&[2012])

在结果中,您将获得具有Committed Amnt&gt;的工具的7月份金额(如果您想更改此更改where子句)。 6月份为1000并且&lt;七月1000。

答案 1 :(得分:0)

以下查询将返回[Measures]的[Measures]。[Amount]。[Measures]。[Amount] 6月份的[承诺金额]低于1000且7月份高于1000

SELECT
[Measures].[Amount] ON 0
,Filter
( [Instrument].[Account Num].MEMBERS  ,
  ([Measures].[Committed Amt],[Time].[Calendar Year].[Month].&[06]&[2012]) > 1000
AND
  ([Measures].[Committed Amt],[Time].[Calendar Year].[Month].&[07]&[2012]) > 1000
) ON 1
FROM [TEST]