Sql Server:多行合并成一行,并做分組統(tǒng)計(jì)的兩個(gè)方法
更新時(shí)間:2013年02月21日 09:59:24 作者:
Sql Server:多行合并成一行,并做分組統(tǒng)計(jì)的兩個(gè)方法,需要的朋友可以參考一下
復(fù)制代碼 代碼如下:
--創(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)計(jì)
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
--查詢結(jié)果
--001 aa,bb 3
--002 aaa,bbb,ccc 12
drop table test
相關(guān)文章
SQL SERVER2012中新增函數(shù)之字符串函數(shù)CONCAT詳解
SQL Server 2012有一個(gè)新函數(shù),就是CONCAT函數(shù),連接字符串非它莫屬。比如在它出現(xiàn)之前,連接字符串是使用"+"來連接,如遇上NULL,還得設(shè)置參數(shù)與配置,不然連接出來的結(jié)果將會(huì)是一個(gè)NULL。本文就介紹了關(guān)于SQL SERVER 2012中CONCAT函數(shù)的相關(guān)資料,需要的朋友可以參考。2017-03-03SQL Server安裝完成后3個(gè)需要立即修改的配置選項(xiàng)
SQL Server里你總要去改變的3個(gè)配置選項(xiàng),大家知道是哪三個(gè)嗎?想要知道答案的朋友就仔細(xì)閱讀下文2015-08-08SQL Server修改標(biāo)識(shí)列方法 如自增列的批量化修改
最近在運(yùn)行系統(tǒng)時(shí)需要對(duì)所有服務(wù)器上數(shù)據(jù)結(jié)構(gòu)進(jìn)行批量修改某個(gè)字段的自增屬性改成非自增2012-05-05SQL如何實(shí)現(xiàn)橫表與縱表相互轉(zhuǎn)換
針對(duì)SQL橫向表轉(zhuǎn)縱向的問題,本文從實(shí)際應(yīng)用出發(fā),詳細(xì)講解了語法和操作步驟,并結(jié)合實(shí)例進(jìn)行了演示和說明。文章還探討了該方法的優(yōu)缺點(diǎn),提出了一些值得注意的事項(xiàng),旨在幫助讀者更深入地理解這一重要的數(shù)據(jù)處理技巧2023-04-04SQL Server正則表達(dá)式 替換函數(shù)應(yīng)用詳解
在sql開發(fā)過程中,經(jīng)常會(huì)使用正則,本文將以此問題進(jìn)行詳細(xì)介紹SQL Server正則表達(dá)式 替換函數(shù)應(yīng)用,需要了解更多的朋友可以參考下2012-11-11SQLServer2005創(chuàng)建定時(shí)作業(yè)任務(wù)
這篇文章主要為大家介紹了SQLServer2005創(chuàng)建定時(shí)作業(yè)任務(wù)的詳細(xì)過程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12