首页 > 解决方案 > SQL SERVER STUFF 功能场景

问题描述

在 SQL Server 中,我有一个这样的表:

Col-1    Col-2    Col-3
------------------------
A         123     25.13
A         456     67.00
A         789     81.89

我想要这样的输出:

Col-1      Col-2            Col-3
-----------------------------------
A         123,456,789      174.02

标签: sqlsql-serversql-server-2012

解决方案


样本数据 :

DECLARE @T TABLE(Col1 VARCHAR(1),
                 Col2 INT,
                 Col3 FLOAT)

INSERT INTO @T( Col1, Col2, Col3 )
VALUES  ('A',123,25.13),('A',456,67),('A',789,81.89)

询问 :

;WITH Keys AS (SELECT Col1,
                      SUM(Col3) AS Col3
               FROM @T 
               GROUP BY Col1)
SELECT Keys.Col1,
       REPLACE(REPLACE(REPLACE( CONVERT (NVARCHAR(MAX),(SELECT T.Col2 AS A
        FROM @T AS T 
        WHERE T.Col1 = Keys.Col1
        FOR XML PATH(''))),'</A><A>',','),'<A>',''),'</A>','') AS Col2,

        Keys.Col3
FROM Keys

结果 :

Col1    Col2          Col3
A       123,456,789   174.02

推荐阅读