SQL Server中将多行数据拼接为一行数据(一个字符串

方法一: 使用T-SQL
DECLARE @Users NVARCHAR(MAX)
SET @Users = ”

SELECT @Users = @Users + ‘,’ + UserName FROM dbo.[User]
WHERE RoleID = 1

SELECT @Users

方法二:使用for xml path(”) 和stuff
–使用 自连接、for xml path(”)和stuff合并显示多行数据到一行中

–注
–1、计算列可以不用包含在聚合函数中而直接显示,如下面语句的val。
–2、for xml path(”) 应该应用于语句的最后面,继而生成xml。
–3、for xml path(‘root’)中的path参数是生成的xml最顶级节点。
–4、字段名或是别名将成为xml的子节点,对于没有列名(字段+”)或是没有别名的字段将直接显示。[value] +’,’则是用,分隔的数据(aa,bb,)。
–5、对于合并多行数据显示为一行数据时使用自连。

–生成测试表并插入测试数据
create table tb(id int, value varchar(10))
insert into tb values(1, ‘aa’)
insert into tb values(1, ‘bb’)
insert into tb values(2, ‘aaa’)
insert into tb values(2, ‘bbb’)
insert into tb values(2, ‘ccc’)
go

–第一种显示
select id, [val]=(
select [value] +’,’ from tb as b where b.id = a.id for xml path(”)) from tb as a
–第一种显示结果
–1 aa,bb,
–1 aa,bb,
–2 aaa,bbb,ccc,
–2 aaa,bbb,ccc,
–2 aaa,bbb,ccc,

–第二种显示
select id, [val]=(
select [value] +’,’ from tb as b where b.id = a.id for xml path(”)) from tb as a
group by id
–第二种显示结果
–1 aa,bb,
–2 aaa,bbb,ccc,

–第三种显示
select id, [val]=stuff((
select ‘,’+[value] from tb as b where b.id = a.id for xml path(”)),1,1,”) from tb as a
group by id
–第三种显示结果
–1 aa,bb
–2 aaa,bbb,ccc

–典型应用
–AMD_GiftNew中获取所有的管理员ID
–select adminIds = stuff((select ‘,’+cast(UserId as varchar) from MM_Users where RoleId = 1 and flag =0 for xml path(”)),1,1,”)
–典型应用显示结果
–3,27

转载自:http://blog.csdn.net/kula_dkj/article/details/8568599

select PPID, [val]=stuff((
select CAST(SKUCD AS VARCHAR) + ‘,’ from PPSKUTbl as b where b.PPID = a.PPID for xml path(”)),1,1,”) from PPSKUTbl as a where PPID = @PPID group by PPID

原文地址:https://www.cnblogs.com/bestlove/p/12597695.html

时间: 2024-08-07 12:20:58

SQL Server中将多行数据拼接为一行数据(一个字符串的相关文章

Sql server 中将数据行转列列转行(二)

老规矩,先弄一波测试数据,数据填充代码没有什么意义,先折叠起来: /* 第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 ( StuName nvarchar(20), --学生名称 Chinese int, Math int, English int ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student --查询所有数据 INSERT INTO #Student(StuName,Chinese,Math

关于SQL Server将一列的多行内容拼接成一行的问题讨论(转载)

说明:本文仅供分享,版权属于原作者. 昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep_classes      ep_name AAA           

关于SQL Server将一列的多行内容拼接成一行的问题讨论

昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep_classes      ep_name AAA             企业1,企业2,企业3 BBB  

SQL Server将一列的多行内容拼接成一行的实现方法

SQL Server将一列的多行内容拼接成一行的实现方法 投稿:mdxy-dxy 这篇文章主要介绍了SQL Server将一列的多行内容拼接成一行的实现方法,需要的朋友可以参考下 下面大家先看下示例代码: 示例 昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 : 类别 名称 AAA 企业1 AAA 企业2 AAA 企业3 BBB 企业4 BBB 企业5 我想把这个表变成如下格式: 类别 名称

SQL Server将一列的多行内容拼接成一行

昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep_classes      ep_name AAA             企业1,企业2,企业3 BBB  

SQL Server获取指定行的数据

SQL Server获取指定行(如第二行)的数据 --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , number = row_number() over(order by Grade desc) from Students )  m where number = 2 --法二(排除法)--- select top 1 * from Students where Grade not in ( select top

在SQL Server中将数据导出为XML和Json

原文:在SQL Server中将数据导出为XML和Json     有时候需要一次性将SQL Server中的数据导出给其他部门的也许进行关联或分析,这种需求对于SSIS来说当然是非常简单,但很多时候仅仅需要一次性导出这些数据而建立一个SSIS包就显得小题大做,而SQL Server的导入导出工具其中BUG还是蛮多的,最简单的办法是BCP.   数据导出为XML     在SQL Server 2005之后提供了一个for xml子句在关系数据库中原生支持XML.通过该命令可以将二维关系结果集转

Sql Server合并多行询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数

示例表 tb 数据如下 id value-----1 aa1 bb2 aaa2 bbb2 ccc SELECT id, [val] = ( SELECT [value] + ',' FROM tb AS b WHERE b.id = a.id FOR XML PATH('') ) FROM tb AS a 显示结果 1 aa,bb, 1 aa,bb, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, SELECT id, [val]=( SELECT [v

Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中

Sql Server 中将由逗号","分割的一个字符串,转换为一个表,并应用与 in 条件 select * from tablenmae where id in(1,2,3) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql语句 string aa="1,2,3"; string sqltxt="select * from tablename where id in ("+aa+")