這是對你有幫助嗎?
;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 –