Mehrere statementen im Fall MDX

Ich muss MDX schreiben, das auf Spalte angezeigt wird und Zeilen in drei Gruppen aufteilt. Die erste Gruppe zeichnet sich durch wenige Zahlen aus, die zweite ist durch Attribut, und die dritte Gruppe ist, wo Ruhe nicht passt.

Mein Code sieht so aus:

case when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "4254255527" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "2752637520" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "5637839739" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "9378793737" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "3789789397" then "ABC" when [Document].[Document series].CURRENTMEMBER.MEMBERVALUE = "XYZ" then "XYZ" else "Rest" end 

Aber ich bekomme immer "Rest".

Wie soll ich das korrigieren?

Bearbeiten: Ein weiterer Versuch, aber immer noch nicht funktioniert:

 case when [Customer].[Customer's Document].[&5196189651] then "ABC" when [Customer].[Customer's Document].[&7885181585] then "ABC" when [Customer].[Customer's Document].[&7511535861] then "ABC" when [Customer].[Customer's Document].[&4742575277] then "ABC" when [Customer].[Customer's Document].[&7272727272] then "ABC" when [Customer's Document].[Document Series].[&CHP] then "XYZ" else "Rest" end 

Ich bekomme das Gefühl, dass du etwas mehr mögen möchtest wie das folgende:

 WITH SET [ABC] AS { [Customer].[Customer's Document].&[5196189651] ,[Customer].[Customer's Document].&[7885181585] ,[Customer].[Customer's Document].&[7511535861] ,[Customer].[Customer's Document].&[4742575277] ,[Customer].[Customer's Document].&[7272727272] } MEMBER [Customer].[All].[ABC] AS Aggregate([ABC]) MEMBER [Customer].[All].[XYZ] AS [Customer].[Customer's Document].[Document Series].&[CHP] SET [REST] AS Except ( [Customer].[Customer's Document].MEMBERS ,[ABC] ) MEMBER [Customer].[All].[Rest] AS Aggregate([REST]) SET [FINAL] AS { [Customer].[All].[ABC] ,[Customer].[All].[XYZ] ,[Customer].[All].[Rest] } SELECT [FINAL] ON 1 ,{[Measures].[Amount]} ON 0 FROM [YourCube]; 

Oder vielleicht folgendes:

 WITH SET [ABC] AS { [Customer].[Customer's Document].&[5196189651] ,[Customer].[Customer's Document].&[7885181585] ,[Customer].[Customer's Document].&[7511535861] ,[Customer].[Customer's Document].&[4742575277] ,[Customer].[Customer's Document].&[7272727272] } MEMBER [Customer].[All].[ABC] AS Aggregate([ABC]) MEMBER [Customer].[All].[XYZ] AS [Customer].[Customer's Document].[Document Series].&[CHP] SET [REST] AS Except ( [Customer].[Customer's Document].MEMBERS ,{ [ABC] ,[Customer].[Customer's Document].[Document Series].&[CHP] } ) MEMBER [Customer].[All].[Rest] AS Aggregate([REST]) SET [FINAL] AS { [Customer].[All].[ABC] ,[Customer].[All].[XYZ] ,[Customer].[All].[Rest] } SELECT [FINAL] ON 1 ,{[Measures].[Amount]} ON 0 FROM [YourCube]; 

Bearbeiten

Nur eine Warnung – in der akzeptierten Antwort gibt es die folgenden mdx :

 case when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "4254255527" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "2752637520" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "5637839739" then "ABC" ... ... 

Dies könnte als die Lösung markiert werden, aber es ist nicht toll mdx . In diesem Fall sollte der IS Betreiber verwendet werden:

 case when [Customer].[Customer's Document].CURRENTMEMBER IS [Customer].[Customer's Document].[Customer's Document].&[4254255527] then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER IS [Customer].[Customer's Document].[Customer's Document].&[2752637520] then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER IS [Customer].[Customer's Document].[Customer's Document].&[5637839739] then "ABC" ... ... 

Welches BI-Tool benutzt du? Sie können diese zu einer neuen Spalte als Namensberechnung zur dataquellenansicht hinzufügen (rechte Maustaste auf Kundentabelle -> Neu benannte Berechnung -> Spaltenname: XXX). Beispiel:

 CASE WHEN ACOLUMN BETWEEN 0 AND 10 THEN 'ABC' WHEN ACOLUMN BETWEEN 10 AND 20 THEN 'ABC' ELSE 'REST' END 

Ich glaube, dass in der CASE müssen Sie die gleiche Hierarchie verwenden.Alternative können Sie brechen Ihren Code auf 2 Teile:

 case when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "4254255527" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "2752637520" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "5637839739" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "9378793737" then "ABC" when [Customer].[Customer's Document].CURRENTMEMBER.MEMBERVALUE = "3789789397" then "ABC" when [Document].[Document series].CURRENTMEMBER.MEMBERVALUE = "XYZ" then "XYZ" else "Rest" end CASE when [Document].[Document series].CURRENTMEMBER.MEMBERVALUE = "XYZ" then "XYZ" else "Rest" end