理想的には、最初のクエリでテーブルを結合する必要がありますが、レポートに 2 つの別個のデータセットを用意し、Lookup 関数を使用して必要なことを行うこともできます。Lookup 関数は 4 つのパラメーターを取ります。あなたの場合、次のように入力します: 1 番目のデータセットの ID フィールド、2 番目のデータセットの ID フィールド、2 番目のデータセットのユーザー名フィールド、データセットの名前。詳細については、MSDN の記事を参照してください: http://msdn.microsoft.com/en-us/library/ee210531.aspx
データをフィルタリングする良い方法は、Split 関数を使用することです。SSRS パラメーターをコンマ区切り値または複数値に設定すると、以下のテーブル値関数を使用して、クエリで使用する一時テーブルに変換できます。
CREATE FUNCTION Split (@origString varchar(max))
returns @temptable TABLE (items varchar(max))
as
begin
declare @idx int
declare @split varchar(max)
set @idx = 1
if datalength(@origString )<1 or @origString is null
return
while @idx <> 0
begin
set @idx = charindex(',', @origString)
if @idx <> 0
set @split = left(@origString, @idx - 1)
else
set @split = @origString
if(datalength(@split) > 0)
insert into @temptable(Items) values(ltrim(rtrim(@split)))
set @origString = right(@origString, datalength(@origString) - @idx)
if datalength(@origString) = 0
break
end
return
end
次に、クエリに次のようなものを含めて、フィルターとして機能させることができます。
SELECT *
FROM Table1 as T1
INNER JOIN Split(@SSRScsvParameter) as T2 on T1.ID = T2.ID