这是对你有帮助吗?
;WITH testtable([Key],Hazards,[DateTime])AS(
SELECT '170021','Safety',CONVERT(DATE,'2016-01-25') UNION all
SELECT '170021','Concerns','2016-01-25' UNION all
SELECT '170021','Abuse','2016-01-25' UNION ALL
SELECT '170021','Abuse','2016-01-24' UNION ALL
SELECT '170021','Abuse2','2016-01-23' UNION ALL
SELECT '170021','Abuse3','2016-01-22' UNION ALL
SELECT '170021','Abuse4','2016-01-21' UNION all
SELECT '252098','Financial','2016-10-28' UNION all
SELECT '250606','Environmental','2016-10-26' UNION all
SELECT '359287','food,utilities','2016-08-08' UNION all
SELECT '409153','climate control','2016-06-24' UNION all
SELECT '671881','None','2016-05-24'
)
SELECT DISTINCT t.[Key],t.DateTime,STUFF(c.Hazards,1,1,'') AS Hazards FROM (
SELECT *,RANK()OVER(PARTITION BY [Key] ORDER BY DateTime DESC) AS rn FROM testtable
) AS t
CROSS APPLY(SELECT ','+tt.Hazards FROM testtable AS tt WHERE tt.[Key]=t.[Key] AND DATEDIFF(d,tt.DateTime,t.DateTime)=0 FOR XML PATH('')) AS c(Hazards)
WHERE rn=1
Key DateTime Hazards
------ ---------- --------------
170021 2016-01-25 Safety,Concerns,Abuse
250606 2016-10-26 Environmental
252098 2016-10-28 Financial
359287 2016-08-08 food,utilities
409153 2016-06-24 climate control
671881 2016-05-24 None
帮助我们来帮助你 - 请分享表的结构,并应produe你想要得到的结果的样本数据。 – Mureinik
请问什么版本的SQL Server? – gbn
你在找这样的东西吗? http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-microsoft-sql-server-2005 –