将多行连接为单行,并在SQL Server中对连接的行进行计数

时间:2019-11-22 07:40:44

标签: sql sql-server sql-server-2014

我有一张桌子A:

enter image description here

,我想要这样的输出:

enter image description here

我想将多行连接成一行,也要计算连接的行数。.

谢谢

2 个答案:

答案 0 :(得分:4)

使用stuff()

select id,  stuff(( select concat( ',', name) from tablename b where a.id= b.id
for xml path('')),1,1, ''),count(*) as cnt
    from tablename a
    group by id

答案 1 :(得分:2)

CREATE TABLE #Temp
(ID INT,NAME VARCHAR(50))


INSERT INTO #Temp(ID, [NAME])VALUES(1,'ABC')
INSERT INTO #Temp(ID, [NAME])VALUES(1,'EFG')
INSERT INTO #Temp(ID, [NAME])VALUES(2,'HIJ')
INSERT INTO #Temp(ID, [NAME])VALUES(2,'JKL')
INSERT INTO #Temp(ID, [NAME])VALUES(3,'MNO')

首先创建了一个表格。...

SELECT t.ID,STUFF(
(
SELECT ',' + s.NAME
FROM #Temp s
WHERE s.ID = t.ID
FOR XML PATH('')),1,1,'') AS NAME,COUNT(t.ID) AS COUNT

FROM #Temp AS t
GROUP BY ID

使用Stuff()