--使用 自连接、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,--1 aa,--2 aaa,bbb,ccc,--第二种显示select ID,' from tb as b where b.ID = a.ID for xml path('')) from tb as agroup by ID--第二种显示结果--1 aa,--第三种显示select ID,[val]=stuff((select ','+[value] from tb as b where b.ID = a.ID for xml path('')),1,'') from tb as agroup by ID--第三种显示结果--1 aa,bb--2 aaa,ccc--典型应用--AMD_GiftNew中获取所有的管理员ID--select adminIDs = stuff((select ','+cast(UserID as varchar) from MM_Users where RoleID = 1 and flag =0 for xml path('')),'')--典型应用显示结果--3,27
-- 查询处理 --sql2005中的方法2 create table tb(ID int,'ccc')go select ID,[values]=stuff((select ','+[value] from tb t where ID=tb.ID for xml path('')),'')from tbgroup by ID总结
以上是内存溢出为你收集整理的SqlServer实现oracle10g的 wmsys.wm_concat()/使用自连接、for xml path('')和stuff合并显示多行数据到一行中全部内容,希望文章能够帮你解决SqlServer实现oracle10g的 wmsys.wm_concat()/使用自连接、for xml path('')和stuff合并显示多行数据到一行中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)