避免在SQL报表中重复行

  • 本文关键字:报表 SQL tsql
  • 更新时间 :
  • 英文 :


这是我需要总结的数据:

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;

演示

最新更新