SQLSERVER 聚集一个表的字段2008及以后,要求支持XML

将以下代码中的TABLE_NAME替换成所需表名称即可。

注意 declare 和set 语句后面不要有 ;否则可能执行不成功

declare @S_Column varchar(8000)
set @S_Column =(SELECT column_name ca FROM INFORMATION_SCHEMA.columns t WHERE TABLE_NAME='jh_dq' for xml auto)
select replace(replace(@S_Column,'<t ca="',''),'"/>',',');

-------------------------------------------------------------------------------------------------------------------------------------------------

分组聚合字符串

with test as
(select 10001 yxdm,'北京大学' yxmc,'计算机' zy union all
 select 10001 yxdm,'北京大学' yxmc,'外语' zy union all
 select 10001 yxdm,'北京大学' yxmc,'机械' zy union all
 select 10001 yxdm,'北京大学' yxmc,'机器人' zy union all
 select 10002 yxdm,'清华大学' yxmc,'土木' zy union all
 select 10002 yxdm,'清华大学' yxmc,'电子' zy union all
 select 10002 yxdm,'清华大学' yxmc,'管理' zy)
 select a.yxdm,a.yxmc,replace(replace((select zy a from test b where b.yxdm=a.yxdm for xml auto),'<b a="',''),'"/>',',') zys
 from test a
 group by a.yxdm,a.yxmc;

 

yxdm yxmc zys
10001 北京大学 计算机,外语,机械,机器人,
10002 清华大学 土木,电子,管理,

posted @ 2017-05-08 15:01  点滴成事  阅读(259)  评论(0编辑  收藏  举报