Sql Server:多行合并成一行,并做分組統(tǒng)計的兩個方法
更新時間:2013年02月21日 09:59:24 作者:
Sql Server:多行合并成一行,并做分組統(tǒng)計的兩個方法,需要的朋友可以參考一下
復制代碼 代碼如下:
--創(chuàng)建 test 表 ,插入數(shù)據(jù)
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;
--方法一
--將多行合并成一行,并做分組統(tǒng)計
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 SERVER2012中新增函數(shù)之字符串函數(shù)CONCAT詳解
SQL Server 2012有一個新函數(shù),就是CONCAT函數(shù),連接字符串非它莫屬。比如在它出現(xiàn)之前,連接字符串是使用"+"來連接,如遇上NULL,還得設置參數(shù)與配置,不然連接出來的結果將會是一個NULL。本文就介紹了關于SQL SERVER 2012中CONCAT函數(shù)的相關資料,需要的朋友可以參考。2017-03-03SQLServer2005創(chuàng)建定時作業(yè)任務
這篇文章主要為大家介紹了SQLServer2005創(chuàng)建定時作業(yè)任務的詳細過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12