Sql MDX使用除';行不通

Sql MDX使用除';行不通,sql,reporting-services,ssrs-2008,mdx,except,Sql,Reporting Services,Ssrs 2008,Mdx,Except,我有以下问题: Select { [Measures].[PerformanceTotalYtd] } on columns, Non Empty{ Except(([Desk].[DeskName].[Trade].Members,[Time].[Year-Month-Day].[Day].&[2012]&[1]&[10]),([Desk].[DeskName].[Trade].Members,[Time].

我有以下问题:

Select
    {
        [Measures].[PerformanceTotalYtd]

    } on columns,

    Non Empty{  
       Except(([Desk].[DeskName].[Trade].Members,[Time].[Year-Month-Day].[Day].&[2012]&[1]&[10]),([Desk].[DeskName].[Trade].Members,[Time].[Year-Month-Day].[Day].&[2012]&[1]&[09]))
    } on rows

from [Cube]

where ([Entity].[Entity].&[9], [Audience].[View].&[GOD])
它存在一个名为Desk的维度。此维度具有名为DeskName的层次结构。最低层次是贸易

办公桌:-总计-部门-业务区-部门-第四级投资组合-办公桌-交易

在下面的查询中,我想显示所有具有度量“PerformanceTotalYtd”的交易2012年1月10日为空,但测量为“PerformanceTotalYtd”的交易除外2012/01/09日期为空

例如:

在2012年1月10日与度量性能Tallytd交易:

ABC 12,99

DEF 3,22

GHI 55,60

在2012/01/09年,交易与度量性能Tallytd:

ABC 80,00

DEF 8,78

我想要以下结果,因为交易“GHI”在2012/01/09上不存在,并且是新的:

GHI 55,60

我的查询显示以下结果:

ABC 12,99

DEF 3,22

GHI 55,60

它不会从2012/01/09中删除现有交易

我有一个SQL解决方案,但希望在MDX中实现:

    SELECT DD.Code, Sum(PerformanceTotalYtd) as TOTAL
      FROM [Reporting_DB].[Star].[Fact_PerformanceTotal] FIS
            inner join Star.Dimension_Desk DD on FIS.DeskID = DD.DeskID
      WHERE FIS.TimeID = 20120110 and FIS.EntityID = 9 AND DD.Code not in ( SELECT DD.Code
FROM [Reporting_DB_HRE].[Star].[Fact_PerformanceTotal] FIS inner join Star.Dimension_Desk DD on FIS.DeskID = DD.DeskID WHERE FIS.TimeID = 20120109 and FIS.EntityID = 9 group by DD.Code)group by DD.Code
有人能帮我吗?我找不到解决办法

对不起,我的英语不好


Alex

我在Adventure Works多维数据集中发现了一个类似的例子: 集合
{[Customer].[City].[bellgardens].[CA],[Customer].[City].[Bellevue].[WA],[Customer].[City].[Bellflower].[CA]}
[Date].[2002].
中有3个
[Measures].[Internet Sales Amount].
值,在
[Date].[2004].
中只有2个值。所以我们需要在2002年显示成员的度量值,其中在2004年度量值==null。 下一个MDX查询将获得所需的结果:

with set S as '{[Customer].[City].&[Bell Gardens]&[CA], [Customer].[City].&[Bellevue]&[WA], [Customer].[City].&[Bellflower]&[CA]}'
select
[Measures].[Internet Sales Amount] on 0,
non empty { Filter(S, IsEmpty(([Date].[Calendar Year].&[2004], [Measures].[Internet Sales Amount]))) } on 1
from [Adventure Works]
where ([Date].[Calendar Year].&[2002])
我试图相应地修改您的示例,但无法对其进行测试。这是:

select
{ [Measures].[PerformanceTotalYtd] } on 0,
non empty { Filter([Desk].[DeskName].[Trade].Members, IsEmpty(([Time].[Year-Month-Day].[Day].&[2012]&[1]&[09], [Measures].[PerformanceTotalYtd]))) } on 1
from [Cube]
where ([Entity].[Entity].&[9], [Audience].[View].&[GOD], [Time].[Year-Month-Day].[Day].&[2012]&[1]&[10])

简而言之:使用Filter而不是Except。

我有解决问题的方法。以下查询显示的结果与Dmitry Polyanitsa的查询结果相同!祝你们今天愉快

with
    set [Trades Today] as NonEmpty([Desk].[DeskName].[Trade].Members,  ([Measures].[PerformanceTotalYtd], [Time].[Year-Month-Day].[Day].&[2012]&[1]&[10]))
    set [Trades Yesterday] as NonEmpty([Desk].[DeskName].[Trade].Members,  ([Measures].[PerformanceTotalYtd], [Time].[Year-Month-Day].[Day].&[2012]&[1]&[9]))
    set [Trades Difference] as Except([Trades Today], [Trades Yesterday])

Select
    {
        [Measures].[PerformanceTotalYtd]

    } on columns,

    Non Empty{  
       [Trades Difference]
    } on rows

from [Cube]

where ([Entity].[Entity].&[9], [Audience].[View].&[GOD])

非常感谢你!它起作用了!:)稍后我将发布一个带有EXPEPT语句的解决方案!我可以在我写完文章8小时后完成!