2013-11-26 51 views
0

我需要編寫一個MDX查詢,它通過我的TEST_DW中已過濾的一組行,並且如果MyValue < 0,否則BelowZero = 0,它將返回BelowZero = 1。我設法使用下面的MDX來完成:MDX依賴於篩選後的行

WITH 
MEMBER [Measures].[BelowZero] AS 
    case when ([Measures].[MyValue]) < 0 
    then 1 
    else 0 
end 
SELECT NON EMPTY 
{ 
    [Measures].[BelowZero] 
} ON COLUMNS, 
NON EMPTY 
{ 
    ([Accounts].[Number].ALLMEMBERS) 
} 
ON ROWS FROM 
( 
    SELECT (STRTOMEMBER('[Date].[20130801]', CONSTRAINED) : STRTOMEMBER('[Date].[20130831]', CONSTRAINED)) ON COLUMNS 
    FROM [TEST_DW] 
) 

問題是我現在需要總結BelowZero的所有值。換句話說,這個MDX應該給我一個結果,告訴我有多少帳戶有Measure.MyValue < 0.我不知道哪些帳戶是< 0,但只是一個計數。

有什麼想法嗎?

回答

2
WITH 
MEMBER [Measures].[BelowZero] AS 
    case when ([Measures].[MyValue]) < 0 
     then 1 
     else 0 
    end 
MEMBER [Measures].[BelowZeroCount] AS 
    SUM([Accounts].[Number].ALLMEMBERS, [Measures].[BelowZero]) 
SELECT NON EMPTY 
{ 
    [Measures].[BelowZeroCount] 
} ON COLUMNS 
FROM 
( 
    SELECT (STRTOMEMBER('[Date].[20130801]', CONSTRAINED) : STRTOMEMBER('[Date].[20130831]', CONSTRAINED)) ON COLUMNS 
    FROM [TEST_DW] 
) 

WITH 
MEMBER [Measures].[BelowZeroCount] AS 
    Filter([Accounts].[Number].ALLMEMBERS, [Measures].[MyValue]) < 0).Count 
SELECT NON EMPTY 
{ 
    [Measures].[BelowZeroCount] 
} ON COLUMNS 
FROM 
( 
    SELECT (STRTOMEMBER('[Date].[20130801]', CONSTRAINED) : STRTOMEMBER('[Date].[20130831]', CONSTRAINED)) ON COLUMNS 
    FROM [TEST_DW] 
)