理想情况下,您希望在初始查询中加入表,但您可以在报表中有两个单独的数据集,并使用 Lookup 函数来完成您需要的操作。Lookup 函数有 4 个参数;在您的情况下,您将填写:第一个数据集的 ID 字段,第二个数据集的 ID 字段,第二个数据集的用户名字段,数据集的名称。有关详细信息,请参阅 MSDN 文章:http: //msdn.microsoft.com/en-us/library/ee210531.aspx
过滤数据的一个好方法是使用拆分函数。将您的 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