程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> Sql Server:多行歸並成一行,並做分組統計的兩個辦法

Sql Server:多行歸並成一行,並做分組統計的兩個辦法

編輯:MSSQL

Sql Server:多行歸並成一行,並做分組統計的兩個辦法。本站提示廣大學習愛好者:(Sql Server:多行歸並成一行,並做分組統計的兩個辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是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)'),
,
,
             ''),[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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved