源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-04-05 05:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Sql Server:多行合并成一行,并做分组统计的两个方法
[u]复制代码[/u] 代码如下:
--创建 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中的新解法   使用XML SELECT code, data=STUFF((SELECT ','+[values] FROM test t WHERE code=t1.code FOR XML PATH('')), 1, 1, ''),sum([count]) as [count] FROM test t1 GROUP BY code   --查询结果 --001    aa,bb    3 --002    aaa,bbb,ccc    12   drop table test
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部