--创建 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

您可能感兴趣的文章:

sql分组后二次汇总(处理表重复记录查询和删除)的实现方法

SQL SERVER 分组求和sql语句

显示同一分组中的其他元素的sql语句

sql获取分组排序后数据的脚本

SQL进行排序、分组、统计的10个新技巧分享

SQL分组排序去重复的小实例

以数据库字段分组显示数据的sql语句(详细介绍)

SQL中Group分组获取Top N方法实现可首选row_number

Sql Server 分组统计并合计总数及WITH ROLLUP应用

SQL语句分组获取记录的第一条数据的方法

sqlserver巧用row_number和partition by分组取top数据

一句Sql把纵向表转为横向表,并分别分组求平均和总平均值

sql 分组查询问题

SQLserver 实现分组统计查询(按月、小时分组)

分组后分组合计以及总计SQL语句(稍微整理了一下)