CASE 語句 (MDX)
可讓您有條件地從多個比較傳回特定值。 案例語句有兩種類型:
比較運算式與一組簡單運算式以傳回特定值的簡單案例語句。
搜尋案例語句,評估一組布林運算式以傳回特定值。
語法
Simple Case Statement
CASE [input_expression]
WHEN when_expression THEN when_true_result_expression
[...n]
[ELSE else_result_expression]
END
Search Case Statement
CASE
WHEN Boolean_expression THEN when_true_result_expression
[...n]
[ELSE else_result_expression]
END
引數
input_expression
解析為純量值的多維度運算式 (MDX) 運算式。
when_expression
評估input_expression 的指定純量值 ,當評估為 true 時,會傳回else_result_expression 的 純量值。
when_true_result_expression
WHEN 子句評估為 true 時所傳回的純量值。
else_result_expression
當 WHEN 子句都評估為 true 時,所傳回的純量值。
Boolean_expression
評估為純量值的 MDX 運算式。
備註
如果沒有 ELSE 子句,而且所有 WHEN 子句都會評估為 false,則結果會是空的資料格。
簡單案例運算式
MDX 會藉由將input_expression 解析 為純量值,來評估簡單的案例運算式。 然後,這個純量值會與when_expression 的 純量值進行比較。 如果兩個純量值相符,CASE 語句會傳回when_true_expression 的值 。 如果兩個純量值不相符,則會評估下一個 WHEN 子句。 如果所有 WHEN 子句都評估為 false,則會傳回 ELSE 子句else_result_expression的值 。
在下列範例中,轉售商訂單計數量詞會根據數個 WHEN 子句進行評估,並根據每年的 Reseller Order Count 量值傳回結果。 對於不符合 WHEN 子句中when_expression 所 指定純量值的轉銷商訂單計數值,則會傳回else_result_expression 的 純量值。
WITH MEMBER [Measures].x AS
CASE [Measures].[Reseller Order Count]
WHEN 0 THEN 'NONE'
WHEN 1 THEN 'SMALL'
WHEN 2 THEN 'SMALL'
WHEN 3 THEN 'MEDIUM'
WHEN 4 THEN 'MEDIUM'
WHEN 5 THEN 'LARGE'
WHEN 6 THEN 'LARGE'
ELSE 'VERY LARGE'
END
SELECT Calendar.[Calendar Year] on 0
, NON EMPTY [Geography].[Postal Code].Members ON 1
FROM [Adventure Works]
WHERE [Measures].x
搜尋案例運算式
若要使用案例運算式來執行更複雜的評估,請使用搜尋的案例運算式。 此搜尋運算式的變化可讓您評估輸入運算式是否在值範圍內。 MDX 會依照這些子句出現在 CASE 語句中的順序來評估 WHEN 子句。
在下列範例中,會根據數個 WHEN 子句的指定 Boolean_expression 來評估 Reseller Order Count 量值。 結果會根據每年的 Reseller Order Count 量值傳回。 因為 WHEN 子句會依照它們出現的順序進行評估,所以所有大於 6 的值都可以輕鬆地指派 「VERY LARGE」 的值,而不需要明確指定每個值。 針對未在 WHEN 子句中指定的轉銷商訂單計數值,會傳回else_result_expression 的 純量值。
WITH MEMBER [Measures].x AS
CASE
WHEN [Measures].[Reseller Order Count] > 6 THEN 'VERY LARGE'
WHEN [Measures].[Reseller Order Count] > 4 THEN 'LARGE'
WHEN [Measures].[Reseller Order Count] > 2 THEN 'MEDIUM'
WHEN [Measures].[Reseller Order Count] > 0 THEN 'SMALL'
ELSE "NONE"
END
SELECT Calendar.[Calendar Year] on 0,
NON EMPTY [Geography].[Postal Code].Members on 1
FROM [Adventure Works]
WHERE [Measures].x