SQL SERVER STUFF FUNCTION SCENARIO
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SERVER STUFF FUNCTION SCENARIO相关的知识,希望对你有一定的参考价值。
在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
答案
你可以使用FOR XML
子句与STUFF()
函数:
select co1, stuff( (select distinct ','+cast(t1.col2 as varchar(255))
from table t1
where t1.col1 = t.col1
for xml path('')
), 1, 1, ''
) as col2,
sum(col3)
from table t
group by co1;
另一答案
样本数据 :
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
以上是关于SQL SERVER STUFF FUNCTION SCENARIO的主要内容,如果未能解决你的问题,请参考以下文章
带有 2 个内部联接的 SQL Server 2014 STUFF
sql server的一些函数------CHARINDEX(),PATINDEX(),STUFF(),SUBSTRING(),RIGHT(),LEFT()