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

初夏的脚步刚刚走来,人们纷纷把厚重的单衣脱掉,换上了凉爽的短袖,又把旅游鞋换成了颜色各不相同的夹鞋,有淡绿色的;有洁白的;还有深蓝色的……

--创建 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中的新解法 使用XMLSELECT 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 12drop table test

以上就是SqlServer:多行合并成一行,并做分组统计的两个方法。对成功的定义,应该说是仁者见仁,智者见智。有的人认为腰缠万贯才是成功,可是财富却往往与幸福无关。纽约康奈尔大学的经济学教授罗伯特·弗兰克说:虽然财富可以带给人幸福感,但并不代表财富越多人越快乐。一旦人的基本生存需要得到满足后,每一元钱的增加对快乐本身都不再具有任何特别意义,换句话说,到了这个阶段,金钱就无法换算成幸福和快乐了。更多关于SqlServer:多行合并成一行,并做分组统计的两个方法请关注haodaima.com其它相关文章!

标签: 并做 SqlServer