2016-07-11 14 views
0

Gibt es eine einfache Möglichkeit, eine IN-Anweisung oder etwas Ähnliches in einer SSRS-Formel für einen iff-Anweisungsvergleich zu tun, ohne einen Schalter 16 Mal zu wiederholen?Wie verwende ich eine IN-Anweisung in SSRS-Formel

Dies ist, was ich, ohne zu erreichen suchen eine Erklärung oder eine separate OR dh (Fields!FieldName.Value = "01" OR Fields!FieldName.Value = "02" ... etc) für jeden Wert zu schreiben:

dieses
=iif((Fields!FieldName.Value IN 
("01","02","03","06","08","09","10","12","15","19"),"TypeA", 
iff((Fields!ProdCode.Value IN ("04","07","11","13","14","16"), 
"TypeB","TypeC") 
+0

Könnten Sie das SQL ändern die an einen Tisch zu setzen, die die Werte in den String TypeA konvertiert, TypeB, TypC? – Mike

Antwort

1

Oder diese:

=switch( 
Instr("," & "01,02,03,06,08,09,10,12,15,19" & ",", "," & Fields!FieldName.Value & ",") > 0 ,"TypeA", 
Instr("," & "04,07,11,13,14,16" & ",", "," & Fields!ProdCode.Value & ",") > 0 ,"TypeB", 
True, "TypeC") 
+0

Das hat funktioniert, danke! – Mattg07

0

Versuchen:

=Switch(
Array.IndexOf(Split("01,02,03,06,08,09,10,12,15,19",","), Fields!FieldName.Value)>-1,"TypeA", 
Array.IndexOf(Split("04,07,11,13,14,16",","),Fields!FieldName.Value)>-1,"TypeB", 
true,"TypeC" 
) 

Lassen Sie mich wissen, ob das hilft.

+0

Ich konnte den Code von saurus verwenden, aber danke für Ihre Hilfe! – Mattg07

+0

dieser Code wird auch funktionieren, jedoch wird es Probleme geben, wenn 1 oder mehrere der Werte in der Zeichenfolge das Trennzeichen (",") enthalten. Die Lösung von saurus wird ähnliche, aber leicht unterschiedliche Probleme haben. – saurus

0

Ich habe ein Beispiel für den Beitritt zu einer Tabelle, die in der SQL generiert wird verspottet. Das ist effizienter, als es in dem Bericht zu tun

SELECT a,b,c,d, etc 
, Lookup.FieldName, Lookup.TypeLabel 
FROM Tables INNER JOIN 
(SELECT '01' AS FieldName, "TypeA" as TypeLabel 
UNION ALL 
SELECT '02' , "TypeA" 
UNION ALL 
SELECT '03' , "TypeA" 
UNION ALL 
SELECT '04' , "TypeB" 
UNION ALL 
... 

SELECT '18' , "TypeC" 
UNION ALL 
SELECT '19' , "TypeC") LookUp 
ON Tables.FieldName = Lookup.FieldName