SQL SERVER STUFF FUNCTION SCENARIO

Pri*_*aaj -1 sql sql-server sql-server-2012

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

Col-1    Col-2    Col-3
------------------------
A         123     25.13
A         456     67.00
A         789     81.89
Run Code Online (Sandbox Code Playgroud)

我想要这样的输出:

Col-1      Col-2            Col-3
-----------------------------------
A         123,456,789      174.02
Run Code Online (Sandbox Code Playgroud)

小智 5

样本数据 :

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)
Run Code Online (Sandbox Code Playgroud)

查询:

;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
Run Code Online (Sandbox Code Playgroud)

结果:

Col1    Col2          Col3
A       123,456,789   174.02
Run Code Online (Sandbox Code Playgroud)