利用XML聚合字符串
2015-07-11 15:52
113 查看
--创建表和测试数据
create table dbo.SumStr(groupid varchar(10),string varchar(10));
insert into dbo.SumStr(groupid,string) values('a','stra1');
insert into dbo.SumStr(groupid,string) values('a','stra2');
insert into dbo.SumStr(groupid,string) values('b','strb1');
insert into dbo.SumStr(groupid,string) values('b','strb2');
insert into dbo.SumStr(groupid,string) values('b','strb3');
insert into dbo.SumStr(groupid,string) values('b','strb4');
insert into dbo.SumStr(groupid,string) values('c','strc1');
insert into dbo.SumStr(groupid,string) values('c','strc2');
insert into dbo.SumStr(groupid,string) values('c','strc3');
--xml聚合
select
a.groupid,
(select ','+ string from dbo.SumStr b where b.groupid = a.groupid for xml path('')) as string
from dbo.SumStr a
group by a.groupid
--结果
/*
groupid string
a ,stra1,stra2
b ,strb1,strb2,strb3,strb4
c ,strc1,strc2,strc3
*/
--去掉最前面的逗号
select c.groupid,stuff(c.string,1,1,'') as string
from
(
select
a.groupid,
(select ','+ string from dbo.SumStr b where b.groupid = a.groupid for xml path('')) as string
from dbo.SumStr a
group by a.groupid
) c
--结果
/*
groupid string
a stra1,stra2
b strb1,strb2,strb3,strb4
c strc1,strc2,strc3
*/
create table dbo.SumStr(groupid varchar(10),string varchar(10));
insert into dbo.SumStr(groupid,string) values('a','stra1');
insert into dbo.SumStr(groupid,string) values('a','stra2');
insert into dbo.SumStr(groupid,string) values('b','strb1');
insert into dbo.SumStr(groupid,string) values('b','strb2');
insert into dbo.SumStr(groupid,string) values('b','strb3');
insert into dbo.SumStr(groupid,string) values('b','strb4');
insert into dbo.SumStr(groupid,string) values('c','strc1');
insert into dbo.SumStr(groupid,string) values('c','strc2');
insert into dbo.SumStr(groupid,string) values('c','strc3');
--xml聚合
select
a.groupid,
(select ','+ string from dbo.SumStr b where b.groupid = a.groupid for xml path('')) as string
from dbo.SumStr a
group by a.groupid
--结果
/*
groupid string
a ,stra1,stra2
b ,strb1,strb2,strb3,strb4
c ,strc1,strc2,strc3
*/
--去掉最前面的逗号
select c.groupid,stuff(c.string,1,1,'') as string
from
(
select
a.groupid,
(select ','+ string from dbo.SumStr b where b.groupid = a.groupid for xml path('')) as string
from dbo.SumStr a
group by a.groupid
) c
--结果
/*
groupid string
a stra1,stra2
b strb1,strb2,strb3,strb4
c strc1,strc2,strc3
*/
相关文章推荐
- sql server 2005用户权限设置深入分析
- SQL Server 2005 DTS导入平面数据出现错误解决方案
- Access to SQLserver 数据库生迁脚本编写器(DB_CreateSqlEV1.06下载)
- SQL Server创建维护计划失败(SQL Server:14234 错误)的解决方法
- 我的服务器SQL2000的sqlserver占用了90%的cpu,怎么查是那个库?
- SqlServer 2005 T-SQL Query 学习笔记(3)
- 利用脚本自动安装SQLServer的实现步骤分析
- sqlserver FOR XML PATH 语句的应用
- sqlserver 手工实现差异备份的步骤
- SqlServer 扩展属性的介绍
- SqlServer提示“列前缀tempdb.无效: 未指定表名”问题解决方案
- sqlserver not in 语句使程充崩溃
- 数据库备份 SQLServer的备份和灾难恢复
- Windows下使用性能监视器监控SqlServer的常见指标
- sqlserver存储过程语法详解
- sqlserver 数据库日志备份和恢复步骤
- SQL Server中的Forwarded Record计数器影响IO性能的解决方法
- sqlserver 2000中创建用户的图文方法
- 解析如何在sqlserver代理中配置邮件会话
- SQLServer 2012中设置AlwaysOn解决网络抖动导致的提交延迟问题