加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Sql Server:多行合并成一行,并做分组统计的两个方法

发布时间:2020-12-12 09:54:09 所属栏目:MsSql教程 来源:网络整理
导读:div class="codetitle" a style="CURSOR: pointer" data="82677" class="copybut" id="copybut82677" onclick="doCopy('code82677')" 代码如下:div class="codebody" id="code82677" --创建 test 表 ,插入数据CREATE TABLE test(code varchar(50),[values]

<div class="codetitle"><a style="CURSOR: pointer" data="82677" class="copybut" id="copybut82677" onclick="doCopy('code82677')"> 代码如下:<div class="codebody" id="code82677">
--创建 test 表 ,插入数据CREATE TABLE test(code varchar(50),[values] varchar(10),[count] int)
INSERT test SELECT '001','aa',1
UNION ALL SELECT '001','bb',2
UNION ALL SELECT '002','aaa',4
UNION ALL SELECT '002','bbb',5
UNION ALL SELECT '002','ccc',3;--方法一
--将多行合并成一行,并做分组统计
SELECT code,
[values] =
stuff(b.[values].value('/R[1]','nvarchar(max)'),
,
''),[count]
FROM (SELECT code,sum([count]) as [count]
FROM test
GROUP BY code) a
CROSS apply (
SELECT [values] =(
SELECT N',' + [values] FROM test
WHERE code = a.code
FOR XML PATH(''),ROOT('R'),TYPE
)
) b;--方法二---SQL2005中的新解法 使用XMLSELECT code,data=STUFF((SELECT ','+[values] FROM test t WHERE code=t1.code FOR XML PATH('')),1,''),sum([count]) as [count]
FROM test t1
GROUP BY code--查询结果--001 aa,bb 3
--002 aaa,bbb,ccc 12drop table test

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读