2012-02-07 164 views
0

我有一個MDX查詢我一直在努力一段時間,只是似乎無法讓它飛向右!這個問題的關鍵在於那些試圖只吸引那些具有任何狀態的作業的子查詢,但是「關閉」(DIM PROJECT)。[Job Status]。& [Closed]}。我知道/我想我可能會失蹤一個括號某處可能???Troubling MDX查詢

也許第二雙眼睛將幫助???

SELECT 
    NON EMPTY 
    { 
     [Measures].[Estimate Extended Amount] 
    ,[Measures].[Estimate Line Total] 
    ,[Measures].[Estimate Markup Amount] 
    } ON COLUMNS 
,NON EMPTY 
    { 
     [DIM PROJECT].[Client - Division - Product - Component].[Job Component Number].ALLMEMBERS* 
     [DIM PROJECT].[Component Description].[Component Description].ALLMEMBERS* 
     [DIM PROJECT].[Client PO Number].[Client PO Number].ALLMEMBERS* 
     [DIM PROJECT].[Job Status].[Job Status].ALLMEMBERS* 
     [DIM PROJECT].[Project Start Date].[Project Start Date].ALLMEMBERS* 
     [DIM PROJECT].[Project End Date].[Project End Date].ALLMEMBERS* 
     [DIM FUNCTION].[Function Category].[Function Category].ALLMEMBERS* 
     [DIM ESTIMATE].[Estimate Number].[Estimate Number].ALLMEMBERS* 
     [DIM ESTIMATE].[Estimate Status].[Estimate Status].ALLMEMBERS 
    } 
    DIMENSION PROPERTIES 
    MEMBER_CAPTION 
    ,MEMBER_UNIQUE_NAME 
    ON ROWS 
FROM 
(
    SELECT 
    {[DIM ESTIMATE].[Estimate Status].&[Approved]} ON COLUMNS 
    FROM (-{[DIM PROJECT].[Job Status].&[Closed]} ON COLUMNS 
    (
    SELECT 
     StrToSet 
     (@DIMPROJECTProduct 
     ,CONSTRAINED 
    ) ON COLUMNS 
    FROM 
    (
     SELECT 
     StrToSet 
     (@DIMPROJECTDivision 
     ,CONSTRAINED 
     ) ON COLUMNS 
     FROM 
     (
     SELECT 
      StrToSet 
      (@DIMPROJECTClient 
      ,CONSTRAINED 
     ) ON COLUMNS 
     FROM [ESTIMATES] 
    ) 
    ) 
) 
) 
WHERE 
    (
    IIF 
    (
     StrToSet 
     (@DIMPROJECTClient 
     ,CONSTRAINED 
     ).Count 
     = 1 
    ,StrToSet 
     (@DIMPROJECTClient 
     ,CONSTRAINED 
    ) 
    ,[DIM PROJECT].[Client].CurrentMember 
    ) 
    ,IIF 
    (
     StrToSet 
     (@DIMPROJECTDivision 
     ,CONSTRAINED 
     ).Count 
     = 1 
    ,StrToSet 
     (@DIMPROJECTDivision 
     ,CONSTRAINED 
    ) 
    ,[DIM PROJECT].[Division].CurrentMember 
    ) 
    ,IIF 
    (
     StrToSet 
     (@DIMPROJECTProduct 
     ,CONSTRAINED 
     ).Count 
     = 1 
    ,StrToSet 
     (@DIMPROJECTProduct 
     ,CONSTRAINED 
    ) 
    ,[DIM PROJECT].[Product].CurrentMember 
    ) 
) 
CELL PROPERTIES 
    VALUE 
,BACK_COLOR 
,FORE_COLOR 
,FORMATTED_VALUE 
,FORMAT_STRING 
,FONT_NAME 
,FONT_SIZE 
,FONT_FLAGS; 

回答

2

我不太知道你正在嘗試做的,但好像你可能已經過去複雜您的查詢一點點我認爲您正在尋找的功能是:除了:

Except([DIM PROJECT].[Job Status].[All].Children,[DIM PROJECT].[Job Status].&[Closed]) 

這會給你所有的工作狀態,除了關閉。如果你把它放在你的where子句(因人而異我的簡化)它可能是:

SELECT 
NON EMPTY 
{ 
    [Measures].[Estimate Extended Amount] 
,[Measures].[Estimate Line Total] 
,[Measures].[Estimate Markup Amount] 
} ON COLUMNS 
,NON EMPTY 
{ 
    [DIM PROJECT].[Client - Division - Product - Component].[Job Component Number].ALLMEMBERS* 
    [DIM PROJECT].[Component Description].[Component Description].ALLMEMBERS* 
    [DIM PROJECT].[Client PO Number].[Client PO Number].ALLMEMBERS* 
    [DIM PROJECT].[Job Status].[Job Status].ALLMEMBERS* 
    [DIM PROJECT].[Project Start Date].[Project Start Date].ALLMEMBERS* 
    [DIM PROJECT].[Project End Date].[Project End Date].ALLMEMBERS* 
    [DIM FUNCTION].[Function Category].[Function Category].ALLMEMBERS* 
    [DIM ESTIMATE].[Estimate Number].[Estimate Number].ALLMEMBERS* 
    [DIM ESTIMATE].[Estimate Status].&[Approved] 
} 
DIMENSION PROPERTIES 
MEMBER_CAPTION 
,MEMBER_UNIQUE_NAME 
ON ROWS 
FROM [ESTIMATES] 
WHERE 
(StrToSet(@DIMPROJECTProduct), 
    StrToSet(@DIMPROJECTDivision), 
    StrToSet(@DIMPROJECTClient), 
    Except([DIM PROJECT].[Job Status].[All].Children,[DIM PROJECT].[Job Status].&[Closed])) 

如果你的參數正好是單數成員你可能只使用StrToMember的where子句。

+0

我知道......!不幸的是,這是查詢生成器在SSRS中爲我自動生成的MDX。但我會試試這個...... MDX絕對不是我的強項! – 2012-02-08 17:18:34

+0

這應該對你有所幫助,我有一個幾乎相同的需求,除了是爲我工作。 – Jesse 2012-02-08 22:46:22