我有一个与此类似的表格:
Id Name CommitDate Commits
------ ------- ----------- --------
1 Ahmed 2018-07-05 2
1 Ahmed 2018-07-07 6
我需要以下输出:
Id Name Summary
------ ------- -------------------------------------------------
1 Ahmed 2 commits on 2018-07-05\n 6 commits on 2018-07-07
实际上,我在这里停下了脚步:
SELECT Id, Name, '' AS Summary FROM Commits
GROUP BY Id, Name
并且无法继续,因为我之前使用的每个GROUP BY
子句都带有一个简单的聚合函数,所以我无法弄清楚是否有一个聚合函数可以将分组的列附加在一起!
答案 0 :(得分:0)
在SQL Server 2017或更高版本中,您可以使用string_agg:
select id
, name
, string_agg(cast(commits as nvarchar(5)) + ' commits on ' +
convert(nvarchar(10), commitdate, 120), char(10)) + char(10)
from commits
group by
id
, name
您可以在SQL Server中表示换行符,例如char(10)
,也可以在换行符加换行符之间表示char(13) + char(10)
。 120
样式converts是datetime
到yyyy-mm-dd
格式。