Не получить ожидаемый результат, используя выражение SSRS

Строки данных извлекаются из базы данных, как показано ниже:

Row | Limit | Color
1   | 0     | Yellow
2   | 50    | Orange
3   | 90    | Green
4   | 100   | Red

Создается таблица с двумя столбцами. Выражение для каждого столбца выглядит следующим образом:

Столбец 1:

=Fields!Color.Value

Столбец 2:

=Switch(Fields!Row.Value=1, Fields!Limit.Value & " - " & Lookup(2, Fields!Row.Value, Fields!Limit.Value, "LimitDs"), Fields!Row.Value=2, Fields!Limit.Value & " - " & Lookup(3, Fields!Row.Value, Fields!Limit.Value, "LimitDs"), Fields!Row.Value=3, Fields!Limit.Value & " - " & Lookup(4, Fields!Row.Value, Fields!Limit.Value, "LimitDs"), Fields!Row.Value <> 1 and Fields!Row.Value <> 2 and Fields!Row.Value <> 3, ">" & Fields!Limit.Value)

Вывод получить, как показано ниже:

Column 1 | Column 2
Yellow   | 0-50
Orange   | 50-90
Green    | 90-100
Green    | 90-100

Фактически, мой ожидаемый результат выглядит следующим образом:

Column 1 | Column 2
Yellow   | 0-50
Orange   | 50-90
Green    | 90-100
Red      | >100

Кто-нибудь может помочь в этом?


person Donna    schedule 05.10.2015    source источник
comment
вместо Fields!Row.Value <> 1 and Fields!Row.Value <> 2 and Fields!Row.Value <> 3, попробуйте True, ">" & Fields!Limit.Value. Это условие SSRS Else для коммутатора.   -  person MiguelH    schedule 05.10.2015
comment
Спасибо MigueIH, но вывод остался прежним.   -  person Donna    schedule 06.10.2015


Ответы (2)


Если вы сначала проверите последнюю возможность, другие условия могут быть выражены как одно (Fields!Row.Value + 1):

=IIF(ISNOTHING(Lookup(Fields!Row.Value, Fields!Row.Value, Fields!Limit.Value, "LimitDs")), 
    ">" & Fields!Limit.Value, 
    Fields!Limit.Value & " - " & Lookup(Fields!Row.Value + 1, Fields!Row.Value, Fields!Limit.Value, "LimitDs"))
person Hannover Fist    schedule 05.10.2015
comment
Спасибо Ганновер Фист. Но это все еще не работает, как я ожидал. - person Donna; 06.10.2015
comment
Значит, Fields!Row.Value=4, ">" & Fields!Limit.Value) не подойдет вместо Fields!Row.Value <> 1 and Fields!Row.Value <> 2 and Fields!Row.Value <> 3, ">" & Fields!Limit.Value)? - person MiguelH; 06.10.2015
comment
@MiguelH - это тоже сработает, но мой работает независимо от того, сколько их, и объединяет остальные в одно утверждение. - person Hannover Fist; 06.10.2015
comment
@Donna - я думаю, проблема не в формуле, а в том, почему вы получаете два Green в своих данных Output. Попробуйте создать новую таблицу только с полем Цвет, чтобы убедиться, что данные верны. - person Hannover Fist; 06.10.2015

Набор данных, используемый для столбца 1, должен быть отделен от выражения в столбце 2: т.е. DataSet1 для столбца 1 и DataSet 2 для выражения в столбце 2. Ваше выражение для столбца 2 необходимо изменить следующим образом: =Switch(Fields! row.Value=1, Fields!limit.Value & "-" & Lookup(2, Fields!row.Value, Fields!limit.Value, "DataSet5"), Fields!row.Value=2, Fields!limit.Value & "-" & Lookup(3, Fields!row.Value, Fields!limit.Value, "DataSet5"), Fields!row.Value=3, Fields!limit.Value & "-" & Lookup(4, Fields! row.Value, Fields!limit.Value, "DataSet5"), Fields!row.Value=4, " > " & Fields!limit.Value )

person SuperSimmer 44    schedule 28.04.2017