zoukankan      html  css  js  c++  java
  • 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)'),
                 1,
                 1,
                 ''),[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('')), 11''),sum([count]) as [count]
    FROM test t1
    GROUP BY code
     
     
     
    --查询结果
     
    --001    aa,bb    3
    --002    aaa,bbb,ccc    12
     
     
     
    drop table test
     
  • 相关阅读:
    android-sdk环境变量配置
    2018/08/04
    python 读取配置文件ini ---ConfigParser
    关于自动化测试框架搭建的前期考虑问题
    Jmeter中用例禁用
    Jmeter创建一个http请求
    基本的sql语法
    sql创建表格时出现乱码
    Jmeter安装
    Java环境搭建
  • 原文地址:https://www.cnblogs.com/51net/p/2920008.html
Copyright © 2011-2022 走看看