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
     
  • 相关阅读:
    (4.24~4.30)
    (4.17~4.23)
    (4.10~4.16)
    FFT题集
    kd树的构造与搜索
    schtasks命令
    关于[WinError 10054] 远程主机强迫关闭了一个现有的连接。
    数据去重复
    将ppt文档转换成pdf
    mvc上传
  • 原文地址:https://www.cnblogs.com/51net/p/2920008.html
Copyright © 2011-2022 走看看