Как использовать оператор IN в формуле SSRS
Есть ли простой способ сделать оператор IN или что-то подобное в формуле SSRS для сравнения операторов iff без необходимости повторять переключение 16 раз?
Это то, чего я хочу достичь без необходимости писать заявление или отдельное ИЛИ, т. Е. (Fields!FieldName.Value = "01" OR Fields!FieldName.Value = "02"
... и т. д.) для каждого значения:
=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")
3 ответа
Решение
Или это:
=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")
Попробуй это:
=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"
)
Позвольте мне знать, если это помогает.
Я смоделировал пример присоединения к таблице, которая генерируется в SQL. Это более эффективно, чем сделать это в отчете
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