Строю отчет в Microsoft SSRS 2016; В моем отчете есть несколько групп, все эти группы выполняются с помощью (одного и того же) набора параметров. Вы можете увидеть снимок экрана ниже:
1) У меня есть 3 группы в дизайнере отчетов SSRS 2016.
2) Все 3 группы используют одно и то же выражение (с использованием параметров) для группировки отчета.
Вкратце, если значение параметра — X, оно сгруппировано по X; если значение этого параметра — Y, оно сгруппировано по Y; Я делаю это для многих групп, создавая множество параметров.
В будущем у меня будет намного больше групп и, следовательно, больше вариантов параметров по мере роста отчета. Я пытаюсь найти способ оптимизировать этот отчет SSRS 2016, написав этот код ТОЛЬКО ОДИН РАЗ.
Я попытался добавить переменную отчета, как показано ниже:
Теперь у меня есть новая переменная отчета (GV2), в которой этот код хранится с оператором Switch.
Теперь я пытаюсь использовать эту переменную отчета во многих различных группах.
Я получаю такую ошибку:
Значения переменных нельзя использовать в групповых выражениях
Есть ли другой способ сделать это? Мне нужно оптимизировать такую параметризованную группировку.
Может писать какие-то кастомные коды в SSRS; если да, можете ли вы предоставить код (мои знания о .Net равны нулю!)
Спасибо
Это может упростить ваш отчет, если вы сделаете это в своем наборе данных. Передайте параметр в свой SQL-запрос, если вы еще этого не сделали, и добавьте столбец groupby. Затем вы можете изменить то, что отображается в этом столбце, на основе параметров, переданных в вашем отчете, и только тогда нужно будет сгруппировать по фиксированному столбцу. — person user3812887 schedule 20.03.2017
Проблема здесь в том, что данные исправлены; это не проблема агрегации (GROUP BY в T-SQL); это больше связано с представлением в SSRS (группы строк); наш клиент хочет объединить множество существующих отчетов в один; поэтому мы пишем одну хранимую процедуру / запрос, а затем добавляем группы строк в SSRS и параметризуем эти группы строк. — person user3812887 schedule 20.03.2017
@AlanSchofield В некотором смысле я не могу ничего изменить в наборе данных! — person user3812887 schedule 20.03.2017
Я не предлагал вам группировать данные в SQL. Я предлагал вам добавить дополнительный столбец к данным, возвращаемым из SQL, который вы могли бы заполнить на основе параметров. Это тот же процесс, который вы пытаетесь выполнить в своем операторе SWITCH, но только что выполняемый в SQL с помощью оператора case. Извините, я только что видел ваш дополнительный комментарий. — person user3812887 schedule 20.03.2017
Для этого вы можете использовать параметр.
=Fields(Parameter!GroupBy.Value).Value
Теперь, когда вы выбираете значение из параметра, оно будет сгруппировано по нему. Вам просто нужно будет добавить новые значения в параметр GroupBy в будущем, чтобы добавить дополнительные параметры.
Вернусь к этому. Дай мне время — person user3812887; 22.03.2017