允許你從多次比較中條件回傳特定值。 案例陳述有兩種類型:
一個簡單的案例陳述,將一個表達式與一組簡單表達式比較,以回傳特定值。
一個搜尋案例陳述,評估一組布林運算式以回傳特定值。
Syntax
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 值的評估基準,當該值值為真時,回傳該 else_result_expression的純量值。
when_true_result_expression
當 WHEN 子句被評估為 true 時,標量值會回傳。
else_result_expression
當所有 WHEN 子句都未被值為真時,標量值會回傳。
Boolean_expression
一個 MDX 表達式,取值為純量值。
備註
若不存在 ELSE 子句,且所有 WHEN 子句皆為 false,則結果為空格。
簡單情況表達式
MDX 透過將 input_expression 解析為純量值來評估一個簡單的案例表達式。 接著將此純量值與 when_expression的純量值比較。 若兩個純量值相符,CASE 陳述式會回傳 when_true_expression值。 若兩個純量值不匹配,則會評估下一個 WHEN 子句。 若所有 WHEN 子句皆為 false,則返回 ELSE 子句中 else_result_expression 的值(如有的話)。
以下範例中,經銷商訂單計數衡量會針對多個 WHEN 條款進行評估,並根據每年經銷商訂單計數的價值回傳結果。 對於轉售商訂單數量值與 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 進行評估。 結果會根據每年經銷商訂單數量的指標值回傳。 由於 WHEN 子句的評估順序依其出現順序,所有大於 6 的值都可以輕易地被賦予「非常大」的值,而無需明確指定每個值。 對於未在 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