【问题标题】:How do i use the EXCEPT function to show dropped data over time?我如何使用 EXCEPT 函数来显示一段时间内丢弃的数据?
【发布时间】:2012-08-01 19:41:44
【问题描述】:

我想过滤超过一定金额(例如 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 分析服务器的 MDX 代码

【问题讨论】:

    标签: mdx except


    【解决方案1】:

    以下查询将为每个 [Measures].[Amount] 的 [Measures].[Committed Amt] 6 月低于 1000 和 7 月高于 1000 的每个 [Measures].[Amount] 返回 [Measures].[Amount]

    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]
    

    【讨论】:

      【解决方案2】:

      您只需将 July 放在 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])
      

      在结果中,您将在 7 月获得承诺金额在 6 月 > 1000 和在 7 月

      【讨论】:

      • 所以我应该替换过滤器中的内容并改用您的语句?
      • @John 我添加了完整的查询。
      猜你喜欢
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2011-11-02
      • 2010-11-20
      • 1970-01-01
      相关资源
      最近更新 更多