使用STUFF()函数在sql server 2008中将多行转换为单行 [英] Multiple rows to single row in sql server 2008 using STUFF() function

查看:69
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆