Преобразовываю отчет кристалла в отчет ssrs. В отчете есть параметр, и на основе выбора он выбирает столбец, а затем группирует по этому столбцу.

Например, если пользователь выбирает «маршрут а», в таблице отображается столбец со всеми «маршрутами а» и группами в этом столбце.

Как мне добиться этого в SSRS?

Я создал параметр, а затем добавил таблицу и вычисляемое поле. Выражение ищет текущее значение параметра, а затем получает столбец из набора данных на основе значения параметра. Однако это занимает слишком много времени (более 2 минут. Я думаю, что, возможно, это не самый эффективный способ сделать это. В кристалле он намного быстрее.

Я читал о фильтрации столбцов (скрыть / показать), но какое поле выбрать для своей таблицы? Столбец должен быть первым.

0
Caesar Tex 2 Апр 2019 в 19:56

1 ответ

Лучший ответ

Почти все в SSRS - это выражения, включая оператор SQL. Допустим, ваш оператор SQL в настоящее время выглядит так:

SELECT RouteA, ThisColumn, ThatColumn, OtherColumn
FROM MyTable
ORDER BY RouteA

Настройте параметр для выбора поля (назовем его RouteField) с отображаемым текстом в качестве метки и именем поля, которое вы хотите использовать для группировки в качестве значения. Так что-то вроде:

Label        | Value
-------------+--------
Route A      | RouteA
Route B      | RouteB
Weird Route  | RouteZ

Теперь вы можете использовать параметр, чтобы напрямую вставить имя поля из значения вашего параметра в ваш оператор SQL, построив SQL с использованием строкового выражения:

="SELECT " & Parameters!RouteField.Value & " AS Route, ThisColumn, ThatColumn, OtherColumn "
&"FROM MyTable "
&"ORDER BY " & Parameters!RouteField.Value 

Какое бы поле ни было выбрано, оно будет называться псевдонимом поля «Маршрут» в вашем SQL, чтобы вы могли использовать его последовательно во всем отчете.

Обратите внимание, что вам, вероятно, придется вручную настроить имена полей в наборе данных.

Также убедитесь, что у вас есть соответствующие пробелы между вашим текстом, чтобы SQL был действительным.

1
Chris Latta 3 Апр 2019 в 22:48