2016-12-12 7 views
1

У меня есть 7 отчетов, которые используют один и тот же запрос, кроме одной строки в предложении where. Как я могу объединить их в один отчет и изменить строку на основе выбранного типа отчета.SSRS 2016 - Измените часть SQL на основе выбора параметра

Пример кода Выберите a.remark из замечаний а, где a.code в (: rpt_parm)

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

Примечание. Я использую SSRS 2016 с VS2015 и соединением Oracle Database.

+0

Есть способы сделать это. Нам нужно будет увидеть все параметры SQL и параметров, чтобы помочь. –

+0

@WesPalmer, что я действительно хотел бы сделать, это выбрать a.remark из примечаний a где: rpt_parm Но я могу уйти от вышеуказанного. Тип отчета будет POU Remarks, POD Remarks и т. Д. И будет иметь значение ('P100', 'P105', P0110 ') или (' P200 ',' P205 ',' P210 ') и т. Д. ... Как правильно получить этот список в поле значений для запроса, чтобы использовать его? – SnowXTC

ответ

0

Я предполагаю, что по списку вы имеете в виду список, разделенный запятой?

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

0

Вы можете изменить свой запрос, чтобы просто принять тип отчета что-то вроде этого (MS-SQL ... жаль не экземпляр Oracle пиная вокруг):

declare @report_type int; 
select * 
from remarks a 
where (@report_type = 'POU Remarks' and a.remarks in ('P100', 'P105', 'P0110')) 
or  (@report_type = 'POD Remarks' and a.remarks in ('P200', 'P205', 'P210')) 
or  ...; 
+0

Вам нужно выполнить отдельную хранимую процедуру для запроса? – SnowXTC

+0

Только, если хотите. Запрос может быть просто встроен в набор данных в отчете. Обычно мы создаем процедуру для каждого отчета, чтобы было проще дать dba, если мы найдем настройку, но многие люди просто вставляют свои запросы. Используйте общий набор данных, когда несколько отчетов будут использовать один и тот же запрос. – SMM

0

https://dataqueen.unlimitedviz.com/2013/10/how-to-use-a-delimited-string-in-a-multi-valued-parameter/

Это работал потрясающе. Ограниченная запятой строка в значении для каждой опции в параметре, а затем в части параметра запроса используется функция split.

Допустим, я довольно новичок в SSRS, и мы находимся под серьезным хрустом времени, чтобы преобразовать 100 отчетов Discoverer в SSRS до конца года. Но мое программирование OCD заставляет меня хотеть делать это так же правильно, как я могу в первый раз.

Я очень ценю помощь.

NEGATE вышеизложенное, ТОЛЬКО ВЕРНУЛИСЬ первое значение в СПИСКЕ

0

Я не уверен, что понял вопрос правильно, но я дам ему выстрелили.

Я думаю, вы могли бы иметь стол helper с двумя колонками, option и value. Для каждого параметра у вас столько строк, сколько у вас есть значений для этой опции. (Таким образом, значение может появляться более одного раза - столько раз, сколько есть вариантов с использованием этого значения.)

Затем вы вводите только номер опции, например :option. Ваш запрос должен быть:

... where a.code in (select value from helper where option = :option) 

Если производительность является проблемой, вы можете поместить указатель на option. Это должно работать лучше, чем любое решение на основе разделенных запятыми строк.

 Смежные вопросы

  • Нет связанных вопросов^_^