这是我需要总结的数据:
CREATE TABLE yourtable(REF int,Field1 varchar(15),Field2 varchar(15))
INSERT INTO yourtable VALUES(1,'a','x'),(1,'b','y'),(1,'c','z')
我想报告以上三个领域:
我想要的输出只是具有不同的Ref值——在这种情况下,"1"出现一次,其他字段出现在一行,但值用逗号分隔,所以,想要的输出=
REF Field 1 Field 2
1 a,b,c x,y,z
我使用的是SQL Server 2014,因此无法使用函数STRING_AGG。
你能告诉我怎样才能达到我想要的产量吗?
非常感谢
我们可以在这里使用FOR XML PATH
技巧来模拟STRING_AGG
在SQL Server的最新版本中更容易执行的操作:
SELECT DISTINCT
REF,
STUFF((
SELECT ',' + t2.Field1
FROM yourtable t2
WHERE t2.REF = t1.REF
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS [Field 1],
STUFF((
SELECT ',' + t2.Field2
FROM yourtable t2
WHERE t2.REF = t1.REF
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS [Field 2]
FROM yourtable t1;