Sql server 在SSRS 2010中,将数据集中的字段用作另一个数据集参数的值
我有一份SSRS报告,它使用了多个数据集,我们称它们为D1和D2 D2是具有一个参数的sp。目标是将单个列中的值从D1传递到D2参数 用户定义的拆分函数使我能够在单个参数中使用多个值运行SP。e、 gSql server 在SSRS 2010中,将数据集中的字段用作另一个数据集参数的值,sql-server,reporting-services,parameters,sql-server-data-tools,Sql Server,Reporting Services,Parameters,Sql Server Data Tools,我有一份SSRS报告,它使用了多个数据集,我们称它们为D1和D2 D2是具有一个参数的sp。目标是将单个列中的值从D1传递到D2参数 用户定义的拆分函数使我能够在单个参数中使用多个值运行SP。e、 g exec MyStoredProc '12345,6789,77891,3423498' 我只需要用逗号连接D1中的值 使用默认值>从查询中获取值>D1>字段1 仅拾取第一个值,而不是所有值 有什么建议吗?我认为,在D1中使用STUFF创建新的领域将使您实现您想要的目标: 以下是一个例子: CR
exec MyStoredProc '12345,6789,77891,3423498'
我只需要用逗号连接D1中的值
使用默认值>从查询中获取值>D1>字段1
仅拾取第一个值,而不是所有值
有什么建议吗?我认为,在D1中使用STUFF创建新的领域将使您实现您想要的目标: 以下是一个例子:
CREATE TABLE #YourTable ([ID] INT, [Name] CHAR(1), [Value] INT)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'A',4)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'B',8)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (2,'C',9)
select * from #YourTable
SELECT
[ID],
STUFF((
SELECT ', ' + [Name] + ': ' + Cast([Value] as varchar(10)) FROM #YourTable
FOR XML PATH('')),1,1,''
) AS NameValues
FROM #YourTable Results
GROUP BY ID
go
-- Drop #YourTable
您也可以使用STRING_AGG,即
那么,为什么不直接更改D1 sql代码以返回值的串联列表而不是行呢。网上有很多这样做的例子。例如,我也想到了这一点,它有点脏,因为D1可能有数百行……难道没有其他方法吗?数百行不是问题,它只是几个KB的字符串。如果D1和D2都使用相同的sql server,并且数据量很大,则还可以使用物理表或临时表在D1中插入并在D2中读取数据来传递所需的任何内容。在多个用户的情况下,只需将一些唯一的int值从D1传递到D2,这样就可以区分传递的数据。或者,如果D2完全依赖于D1,则将两个数据集合并为一个。
SELECT
STRING_AGG ([Value], ', ')
FROM #YourTable Results