--使用 自连接、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
分享到:
相关推荐
在SQL中,将多行数据合并为一行,尤其是在某一列进行字符串拼接,是一项常见的需求。这通常用于汇总数据、创建报表或者为了分析目的而整合信息。本文将深入探讨如何利用SQL实现多行数据的合并,特别关注字符串拼接的...
在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以便于数据分析和展示。在本文中,我们将介绍如何在 SQL Server 中将一个字段的多个记录值合并到一行显示,并提供相关的示例代码和实现方法。 ...
总结来说,SQL Server提供了强大的字符串处理功能,通过`STUFF`、`FOR XML PATH`等函数,我们可以方便地处理重复数据,将其合并为一行,并用逗号分隔。这在处理汇总信息或展示聚合数据时非常有用。在实际工作中,...
在SQL查询语言中,“SQL合并一列”通常指的是通过某种方式将多个行中的数据合并到同一列中的技术。这种需求常见于报表制作、数据分析等领域,尤其是在处理会计科目等需要展示多层级信息的情况下更为常用。 #### 1. ...
在SQL中,有时我们需要将具有相同属性的重复行数据合并成一行,并使用特定的分隔符,如逗号,来区分各个值。这种操作在处理报告或者数据分析时非常常见,可以减少数据的冗余,使结果更加简洁。本文将详细讲解如何在...
第一种方法中使用了STUFF函数和CROSS APPLY操作符,其中STUFF函数用于去除字符串前的逗号,CROSS APPLY则用于对每一组code生成一个XML格式的字符串,该字符串包含了同一code下所有的[values],并以逗号分隔。...
在SQL Server中,有时我们需要将一列中多行的数据拼接成一行,这对于数据的汇总展示非常有用。本文将详细讲解如何实现这个功能,主要利用`STUFF`和`FOR XML PATH`这两个SQL Server 2005及以后版本引入的函数。 首先...
在SQL Server中,我们可以用`FOR XML PATH`结合`STUFF`函数来达到类似的效果,但这通常需要更复杂的SQL语句。而`SqlServer GroupConcat`的CLR实现则提供了一个更为简洁的解决方案,使得在SQL Server中进行字符串聚合...