栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 数据库 > MySQL > MsSql

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

MsSql 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

复制代码 代码如下:
--创建 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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/169936.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号