将多行连接成单行并计算 SQL Server 中连接的行数
Posted
技术标签:
【中文标题】将多行连接成单行并计算 SQL Server 中连接的行数【英文标题】:Concatenate multiple rows into single rows and count the concatenated rows in SQL Server 【发布时间】:2019-11-22 07:40:44 【问题描述】:我有一张桌子 A:
我想要这样的输出:
.
我想将多行连接成一行,并且我想计算连接了多少行..
谢谢
【问题讨论】:
这能回答你的问题吗? Simulating group_concat mysql function in Microsoft SQL Server 2005? 【参考方案1】:使用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
使用东西()
【讨论】:
以上是关于将多行连接成单行并计算 SQL Server 中连接的行数的主要内容,如果未能解决你的问题,请参考以下文章