使用STUFF()函数在sql server 2008中将多行转换为单行 [英] Multiple rows to single row in sql server 2008 using STUFF() function
本文介绍了使用STUFF()函数在sql server 2008中将多行转换为单行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样的事情:
演示表
Id 名称
1 abcd。
2 efgh。
3 ijkl。
4 mnop。
我想要的是回询:
abcd.efgh.ijkl.mnop。
我需要一些东西一次性获取所有行..
提前感谢..
解决方案
DECLARE @Result as Varchar(Max)
SELECT @Result = COALESCE(@Result,'')+(IsNull(x。姓名,''))+'。'来自
(
选择姓名
来自演示
)x
选择@Result作为'结果'
如果你想要这个,那么点击接受解决方案
以下是使用STUFF的解决方案:
DECLARE @ Heroes TABLE (
[Heroes_ID] int ,
[Heroes_Name] NVARCHAR ( 20 )
)
INSERT INTO @Heroes ([Heroes_ID],[Heroes_Name])
VALUES ( 1 ,' 超人'),( 2 ,' 蝙蝠侠'),( 3 ,' Ironman'),( 4 ,' Wolverine')
SELECT * FROM @ Heroes
SELECT STUFF(( SELECT ' ,' + [Heroes_Name]
FROM @Heroes
ORDER BY [Heroes_Name]
FOR XML PATH(' ')), 1 , 1 ,' ') AS [输出跨度>
I have something like this:
demo table
Id name
1 abcd.
2 efgh.
3 ijkl.
4 mnop.
What I'd like is to query back:
abcd.efgh.ijkl.mnop.
I need something to get all the rows at once..
thanks in advance..
解决方案
DECLARE @Result as Varchar(Max)
SELECT @Result =COALESCE(@Result,'') + (IsNull(x.Name,'')) + '.' from
(
SELECT Name
FROM Demo
)x
Select @Result as 'Result'
If you want this then click accept solution
Here is a solution using STUFF:
DECLARE @Heroes TABLE ( [Heroes_ID] int, [Heroes_Name] NVARCHAR(20) ) INSERT INTO @Heroes ( [Heroes_ID], [Heroes_Name] ) VALUES ( 1,'Superman' ), ( 2,'Batman' ), (3,'Ironman'), (4,'Wolverine') SELECT * FROM @Heroes SELECT STUFF((SELECT ', ' + [Heroes_Name] FROM @Heroes ORDER BY [Heroes_Name] FOR XML PATH('')), 1, 1, '') AS [Output]
这篇关于使用STUFF()函数在sql server 2008中将多行转换为单行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文