我在Report Builder 3.0中开发了一个报表,报表服务器是SRSS 2008 R2。此报告有一个名为id_product的报告参数。有两个数据集可用。一个数据集用于填充报告表。在第二个数据集中,我正在尝试导出id_product。以下查询仅适用于单值参数id_product,此查询在第二个数据集中使用报告在尝试同时运行多个产品的报告时弹出错误。我查看了SQL事件探查器,似乎无法使用当前代码在全局临时表中插入参数值。
我知道名为Join的VB Expression,但在这种情况下,我不确定我是否可以使用它。如果我可以使用这种表达方式会很棒。这样我就不会再创建数据集了。
当前查询:
drop table ##SelectedValues
create table ##SelectedValues(id_product nvarchar(max))
insert into ##SelectedValues(@id_product)
exec xp_cmdshell 'bcp "select ''id_product''
union all select * from ##SelectedValues" queryout "G:\Report\sqloutput.csv" -c -T -t'
输入:ProductId参数值:12,16,20
csv中的所需输出:
id_product
12
16
20
答案 0 :(得分:0)
您可以使用将逗号分隔的字符串解析为表行的split函数,也可以使用我最喜欢的动态sql! :)
if object_id('tempdb..#SelectedValues') is not null
drop table #SelectedValues
create table #SelectedValues(id_product nvarchar(max))
declare @id_product nvarchar(max),@sql nvarchar(max)
set @id_product = '12, 16, 20'
set @sql =
'select ''' + replace(@id_product,', ',''' union all select ''') + ''''
insert into #SelectedValues(id_product) exec(@sql)
select * from #SelectedValues