表数据如下:
字段: code name area
值: 01 小明 上海
01 小明 北京
01 小明 广州
02 小王 上海
02 小王 武汉
能否只通过一句sql语句,查出以下结果:
字段: code name area
值: 01 小明 上海、北京、广州
02 小王 上海、武汉
即area字段进行了分组合并,并用符号分隔,请教sqlserver是否能用一句sql实现?
------解决方案--------------------
- SQL code
select code,name,area=stuff((select '、'+area from tb where code=t.code and name=t.name for xml path('')),1,1,'')from tb tgroup by code,name
------解决方案--------------------
- SQL code
--2005 or 2008select code,name, stuff((select '、'+area from tb where code = t.code for xml path('')),1,1,'') areafrom tb tgroup by code,name
------解决方案--------------------
- SQL code
create table xuyi(code char(2), name char(4), area varchar(6))insert into xuyiselect '01', '小明', '上海' union allselect '01', '小明', '北京' union allselect '01', '小明', '广州' union allselect '02', '小王', '上海' union allselect '02', '小王', '武汉'with t as(select a.code,a.name,cast((select area+',' from xuyi b where b.code=a.code and b.name=a.name for xml path('')) as varchar(30)) areafrom xuyi agroup by a.code,a.name)select code,name,left(area,len(area)-1) areafrom tcode name area---- ---- ------------------------------01 小明 上海,北京,广州02 小王 上海,武汉(2 row(s) affected)