Отчеты SSRS – множественные выборки Определение нескольких запросов

Набор данных SSRS имеет два запроса T-SQL. Один запрос будет выполняться только в том случае, если определенный параметр имеет два или более значений. Другой запрос будет выполняться только в том случае, если параметр имеет только одно значение. Как я могу позволить набору данных знать, было ли выбрано одно значение или несколько значений из параметра?

Вы можете создать дополнительный целочисленный параметр с именем NumberOfValues , установить его hidden и использовать выражение, подобное приведенному ниже в значении по умолчанию:

 =Parameter!YourMultipleValueParam.Value.Count 

Затем в наборе данных вы можете использовать параметр NumberOfValues для определения количества значений, выбранных в параметре YourMultipleValueParam .

 IF @NumberOfValues > 1 BEGIN .... 

Хороший вопрос. Вот один из способов, который я нашел вокруг этого.

Шаг 1: В свойствах вашего набора данных перейдите на вкладку «Параметры». Добавьте параметр со следующим выражением, заменив имя MyParameterName на имя вашего параметра.

 =join(Parameters!MyParameterName.Value,",") 

Шаг 2: Если у вас его еще нет, добавьте функцию разделения к вашим функциям SQL Server. Простой поиск в google приведет вас к чему-то вроде этого: функция Split эквивалентна в T-SQL?

Шаг 3. Выберите количество параметров, используемых в отчете SSRS. На основе результата сделайте то, что вам нужно: (Моя функция расщепления просто называется Split)

 IF (select count(*) from Devl.dbo.Split(@MyParameterName,',')) = 1 BEGIN /* Do your second query here, when one parameter is selected */ END IF (select count(*) from Devl.dbo.Split(@MyParameterName,',')) > 1 BEGIN /* Do your first query here, when more than one parameter is selected */ END 

EDIT: Альтернативы шагам 2 и 3, если вы не хотите (или не можете) создавать / использовать функцию split.

Шаг 2. В главном запросе вверху включите следующее (в основном встроенную версию функции split)

 declare @string varchar(max), @delimiter char(1) declare @temptable table (items varchar(max)) set @string = @MyParameterName set @delimiter = ',' declare @idx int, @slice varchar(max) select @idx = 1 if len(@String)<1 or @String is null return while @idx!= 0 begin set @idx = charindex(@Delimiter,@String) if @idx!=0 set @slice = left(@String,@idx - 1) else set @slice = @String if(len(@slice)>0) insert into @temptable(Items) values(@slice) set @String = right(@String,len(@String) - @idx) if len(@String) = 0 break end 

Шаг 3. Выберите количество параметров, используемых в отчете SSRS. На основе результата сделайте то, что вам нужно: (Моя функция расщепления просто называется Split)

 IF (select count(*) from @temptable) = 1 BEGIN /* Do your second query here, when one parameter is selected */ END IF (select count(*) from @temptable) > 1 BEGIN /* Do your first query here, when more than one parameter is selected */ END 
  • Получение строки подключения MS SQL Server без использования визуальной студии?
  • Использование SSIS для сопоставления жестко закодированных значений как части миграции таблицы «один ко многим» в Visual Studio
  • Добавление заголовков SOAP для веб-службы конечной точки HTTP 2005 в Visual Studio 2008
  • Проект Visual Studio 2013+ DB - Partial Schema / Import Partial DB Project
  • Подключение к SQL Server с именем пользователя и паролем
  • Как установить Build Action для сгенерированных файлов из T4?
  • Не удается подключиться к базе данных Azure SQL из Visual Studio
  • как долго выполняется запрос?
  • Visual Studio не подключается к Sql Server 2000
  • C # SQL Random Sample с использованием локальной базы данных
  • Хранение файлов в базе данных SQL Server
  • Interesting Posts

    Когда начинается задание SQL, каково значение @@ ROWCOUNT?

    Фильтрация столбца OUTER APPLY в разделе WHERE

    Преобразование десятичных и даты / типов данных в пользовательские эквиваленты varchar

    База данных Entity Framework – сначала с SQL Server

    Почему мое приложение зависает при попытке закрыть объект SqlConnection?

    Выбор SQL TOP N строк из группы, row_number, ранга не работает

    Единый запрос SQL с входным параметром tvp, когда tvp не содержит строки

    Можно ли отправить массив параметров для хранения процедуры?

    Как сделать внешний ключ доступным только для ссылки на подмножество строк в целевой таблице

    SQL Server: собственный клиент и ODBC?

    Индекс идентичности столбца SQL Server 2012, переходящий с 6 на 1000+ на 7-ю запись

    Ошибка конверсии при преобразовании значения varchar в тип данных smallint

    SQL Server – обеспечение только одной транзакции пытается создать таблицу

    Средний и случай в SQL

    Случайный выбор не всегда возвращает одну строку

    Давайте будем гением компьютера.