Как сделать двойной регистр / оператор переключения в SQL SSRS? - PullRequest
0 голосов
/ 25 сентября 2019

У меня очень простая таблица только с двумя полями, вот как это выглядит:

+-------+------------+
| State |   Value    |
+-------+------------+
| CT    | 93686.80   |
| MO    | 49109.00   |
| SD    | 2155.00    |
| AL    | 105598.20  |

Затем в SSRS у меня есть оператор switch, который определяет цвет текстового поля на основе значения,

Вот что

=SWITCH 
(
 Min(Fields!Value.Value, "CustomersByState") >= 1500000,"#920000",
 Min(Fields!Value.Value, "CustomersByState") >= 1000000,"#a30000",
 Min(Fields!Value.Value, "CustomersByState") >=  500000,"#ac1919",
 Min(Fields!Value.Value, "CustomersByState") >=  200000,"#b53232",
 Min(Fields!Value.Value, "CustomersByState") >=  100000,"#be4c4c",
 Min(Fields!Value.Value, "CustomersByState") >=   50000,"#c76666",
 Min(Fields!Value.Value, "CustomersByState") >=   25000,"#d17f7f",
 Min(Fields!Value.Value, "CustomersByState") >=   10000,"#da9999",
 Min(Fields!Value.Value, "CustomersByState") >=    5000,"#e3b2b2",
 Min(Fields!Value.Value, "CustomersByState") >=    2500,"#eccccc",
 Min(Fields!Value.Value, "CustomersByState") >=    1000,"#f5e5e5",
 1=1,"#ffffff"
 )

Я хочу добавить еще одну упаковку оператора iff, которая проверяет, является ли это определенное состояние, такое как CA или NY.Как я могу это сделать?Это то, что я пытался, но это не сработало.

 =IIF(First(Fields!State.Value, "Customers") = "CA",
(
    SWITCH 
    (
     Min(Fields!Value.Value, "Customers") >= 1500000,"#920000",
     Min(Fields!Value.Value, "Customers") >= 1000000,"#a30000",
     Min(Fields!Value.Value, "Customers") >=  500000,"#ac1919",
     Min(Fields!Value.Value, "Customers") >=  200000,"#b53232",
     Min(Fields!Value.Value, "Customers") >=  100000,"#be4c4c",
     Min(Fields!Value.Value, "Customers") >=   50000,"#c76666",
     Min(Fields!Value.Value, "Customers") >=   25000,"#d17f7f",
     Min(Fields!Value.Value, "Customers") >=   10000,"#da9999",
     Min(Fields!Value.Value, "Customers") >=    5000,"#e3b2b2",
     Min(Fields!Value.Value, "Customers") >=    2500,"#eccccc",
     Min(Fields!Value.Value, "Customers") >=    1000,"#f5e5e5",
     1=1,"#ffffff"
     )
 )
 ,"#ffffff")

Я получаю странную ошибку буфера XML.Хотя это может быть связано с чем-то другим.Может кто-нибудь сказать мне, если этот код является правильным?По своему усмотрению я заполняю каждый многоугольник штата на карте SSRS и хочу закрасить его значением состояния.

...