CASE-uttalande (MDX)

Låter dig villkorligt returnera specifika värden från flera jämförelser. Det finns två typer av falluttalanden:

  • Ett enkelt kasusuttryck som jämför ett uttryck med en mängd enkla uttryck för att returnera specifika värden.

  • En sökt fallsats som utvärderar en uppsättning booleska uttryck för att returnera specifika värden.

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  

Arguments

input_expression
Ett multidimensionellt uttryck (MDX) som löser sig till ett skalärt värde.

when_expression
Ett specificerat skalärt värde mot vilket input_expression utvärderas, vilket när det utvärderas till sant returnerar det skalära värdet av else_result_expression.

when_true_result_expression
Skalärvärdet returnerades när WHH-klausulen utvärderas till sann.

else_result_expression
Skalärvärdet returnerades när ingen av WENN-klausulerna utvärderas till sann.

Boolean_expression
Ett MDX-uttryck som utvärderar till ett skalärt värde.

Remarks

Om det inte finns någon ELSE-klausul, och alla NÄR-klausuler utvärderar till falskt, blir resultatet en tom cell.

Enkelt kasusuttryck

MDX utvärderar ett enkelt falluttryck genom att lösa input_expression till ett skalärt värde. Detta skalärvärde jämförs sedan med skalära värdet av when_expression. Om de två skalära värdena matchar returnerar CASE-satsen värdet av when_true_expression. Om de två skalära värdena inte stämmer överens, utvärderas nästa WHEN-klausul. Om alla WHANN-klausuler utvärderas till false, returneras värdet av else_result_expression från ELSE-klausulen, om det finns något.

I följande exempel utvärderas Reseller Order Count-måttet mot flera NÄR-klausuler och ger ett resultat baserat på värdet av Reseller Order Count-måttet för varje år. För Reseller Order Count-värden som inte matchar ett skalärt värde specificerat i en when_expression i en WHEN-klausul, returneras det skalära värdet av 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  

Sökt kasusuttryck

För att använda falluttrycket för att utföra mer komplexa utvärderingar, använd det sökta falluttrycket. Denna variation av sökuttrycket gör att du kan utvärdera om ett indatauttryck ligger inom ett värdeintervall. MDX utvärderar WHEN-klausulerna i den ordning som dessa klausuler förekommer i CASE-satsen.

I följande exempel utvärderas Reseller Order Count-måttet mot den specificerade Boolean_expression för var och en av flera WHEN-klausuler. Ett resultat returneras baserat på värdet av Reseller Order Count-måttet för varje år. Eftersom WHEN-klausuler utvärderas i den ordning de förekommer, kan alla värden större än 6 enkelt tilldelas värdet "MYCKET STOR" utan att behöva specificera varje värde explicit. För Reseller Order Count-värden som inte anges i en WHEN-klausul returneras skalärvärdet för 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