代码之家  ›  专栏  ›  技术社区  ›  Simon

我可以重新格式化这个MDX查询以使用集合而不是“And”吗?

  •  0
  • Simon  · 技术社区  · 14 年前
    with member [Measures].[BoughtDispenser] as
        Sum(Descendants([Customer].[Customer].CurrentMember, [Customer].[Customer]),
            Iif(
                (IsEmpty(([Item].[ItemNumber].&[011074], [Measures].[Sale Amount]))
                And IsEmpty(([Item].[ItemNumber].&[011069], [Measures].[Sale Amount]))
                )
                Or IsEmpty([Measures].[Sale Amount]),
                0 , 1
            )
        )
    select 
    {[Measures].[Sale Amount]} on columns,
    non empty filter([Customer].[Customer].children, [Measures].[BoughtDispenser])
        * {[Item].[ItemNumber].members}
    on rows
    from [Sales]
    where [EnteredDate].[Quarter].&[2010-01-01T00:00:00]
    ;
    

    其目的是显示同时购买了两个分配器(011069和011074)中任何一个的客户所购买的所有商品。

    我基于一个查询计算出的成员,我发现做篮子分析。我觉得应该有办法用集合{[Item].[ItemNumber]来编写它[011074],[项目].[项目编号]。&[011069]}而不是两个IsEmpty测试。我尝试过的每一件事最终都有了每一位顾客。

    我的环境是SQL Server Analysis Services 2005。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Simon    14 年前

    with member [Measures].[BoughtDispenser] as
        Sum(Descendants([Customer].[Customer].CurrentMember, [Customer].[Customer])
            * {[Item].[ItemNumber].&[011069], [Item].[ItemNumber].&[011074]},
            [Measures].[Quantity Shipped]
        )
    select 
    {[Measures].[Sale Amount]} on columns,
    non empty filter([Customer].[Customer].children, [Measures].[BoughtDispenser])
        * {[Item].[ItemNumber].members}
    on rows
    from [Sales]
    where [EnteredDate].[Quarter].&[2010-01-01T00:00:00]
    ;