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

问题描述 投票:0回答:2

我有一个表A:

enter image description here

而且我想要这样的输出:

enter image description here

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

感谢

sql sql-server sql-server-2014
2个回答
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

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

USE Stuff()

© www.soinside.com 2019 - 2024. All rights reserved.