Я всегда манипулирую объединенными параметрами в таблице в хранимой процедуре, а затем внутренним соединением с этой таблицей.
Пример с использованием моих собственных данных:
Используемое мной соединение SSRS:
=Join(Parameters!param_1.Value,"#~--~#")
Затем хранимая процедура:
create proc whatever
@profs varchar(8000)
as
declare @profs_t table (ProfName varchar(70))
declare @delim varchar(10) = '#~--~#'
declare @delimlen int = len(@delim)
declare @idx int = 1 - @delimlen
while charindex(@delim, @profs, @idx + @delimlen) <> 0
begin
insert into @profs_t
select substring(@profs, @idx + @delimlen, charindex(@delim, @profs, @idx + @delimlen) - @idx - @delimlen)
set @idx = charindex(@delim, @profs, @idx + @delimlen)
end
insert into @profs_t
select substring(@profs, @idx + @delimlen , len(@profs))
select *
from @profs_t pt
inner join professionals p on p.profname = pt.profname
Преобразует объединенные параметры из SSRS в табличную переменную (вы также можете легко использовать временную таблицу). Это довольно обобщенно c и может использовать любые разделители, даже несколько разделителей символов (как показано). Я полагаю, что разделитель может быть передан в pro c в качестве параметра тоже.