Предложение LAST WHERE в выражении SSRS - PullRequest
1 голос
/ 11 февраля 2020

Для видимости некоторых полей я хочу проверить, имеет ли поле заданное значение c.

Сейчас я использую это выражение видимости:

=IIF (Sum(IIF(Fields!TagName.Value = "Option1" , Fields!Val.Value, 0), "ParamDataset") > 0, true, false)

Если опция 1 равна 1, поле отображается, если его 0, то оно скрыто.

Работает , но решение плохое. Он проверяет все записи в Option1, и если это было одновременно 1, поле отображается, даже если последняя запись равна 0. Также оно различает только от 0 до 1.

Я ищу выражение, которое проверяет только последнюю запись «Option1», и, если возможно, также, если значение является заданным значением c, а не только 0 или 1. Например, если его 23 или что-то еще.

PS: я не могу использовать tablix и соответствующие фильтры, потому что данные процесса находятся в другом наборе данных, чем данные конфигурации.

1 Ответ

1 голос
/ 11 февраля 2020

Я не думаю, что это возможно в выражении SSRS. Я думал об использовании LAST, но вы хотите LAST, где OPTION = 1.

Вы могли бы заставить его работать, если бы вы могли отсортировать данные так, чтобы Option1 был последним отсортированным, а затем текущая сортировка:

ORDER BY CASE WHEN TagName = 'Option1' THEN 1 ELSE 2 END, <CURRENT SORT CRITERIA>

Теперь, так как ваш TagName Варианта 1 является последним и вы хотите последний из Вариантов1, вы можете использовать LAST:

=IIF(LAST(Fields!Val.Value, "ParamDataset") > 0, true, false)

Было бы лучше, если бы вы могли добавить ROW_NUMBER к ParamDataset:

,ROW_NUMBER()OVER(PARTITION BY TagName ORDER BY SOME_FIELD DESC) ROW_NUM

Затем вы можете проверить наличие имени тега = Option1 и ROW_NUM = 1:

=IIF(SUM(IIF(Fields!TagName.Value = "Option1" AND ROW_NUM = 1, Fields!Val.Value, 0), "ParamDataset") > 0, true, false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...