当前位置: 代码迷 >> Sql Server >> 一个行转列有关问题(内详,带测试数据)
  详细解决方案

一个行转列有关问题(内详,带测试数据)

热度:34   发布时间:2016-04-24 10:43:12.0
一个行转列问题(内详,带测试数据)
if OBJECT_ID('temp')is not null
drop table temp
go
create table temp(
账号 nvarchar(2),
姓名 varchar(8),
服务人 varchar(8)
)
go
insert temp
select '1','张三','A' union all
select '2','李四','B' union all
select '3','王五','C' union all
select '1','张三','B' union all
select '1','张三','C' 

select * from temp

表内容为:
引用
账号 姓名 服务人
1 张三 A
2 李四 B
3 王五 C
1 张三 B
1 张三 C


现需要得到结果:
引用
账号 姓名 服务人
1 张三 A/B/C
2 李四 B
3 王五 C

即:同一个账号的人,其"服务人"合并为一列,并用“ /”隔开,如何做?





------解决方案--------------------

SELECT 账号,姓名,服务人=STUFF((SELECT '/'+服务人 FROM #temp WHERE 账号=a.账号 FOR XML PATH('')),1,1,'')
FROM temp a
GROUP BY 账号,姓名

------解决方案--------------------

SELECT 账号,姓名,服务人=STUFF((SELECT '/'+服务人 FROM temp WHERE 账号=a.账号 FOR XML PATH('')),1,1,'')
FROM temp a
GROUP BY 账号,姓名
  相关解决方案