sql行转列 有同样的列希望用逗号分割在一行显示
sql行转列 有一样的列希望用逗号分割在一行显示
例如是这样的,fieldtype:1代表座机 2代表手机
name field fieldtype
李 01058210000 1
王 13512555685 2
李 01052810001 1
想出来这样的效果,'.'请忽略
姓名 ........ 座机 ....................................................... 手机
李......01058210000,01052810001
王 .....................................................................13512555685
如果李有手机还是会显示在李的手机列
我现在能出来普通行转列的效果
姓名 座机 手机
李 01058210000
王 13512555685
请问可以实现吗?以下是我的代码
------最佳解决方案--------------------
select 姓名,stuff((select ','+field from tb tb2 where fieldtype=1 and tb2.姓名=tb1.姓名 for xml path('')),1,1,'') 座机,stuff((select ','+field from tb tb2 where fieldtype=2 and tb2.姓名=tb1.姓名 for xml path('')),1,1,'') 手机 from tb tb1 group by tb1.姓名
------其他解决方案--------------------
该回复于2012-11-23 09:53:27被版主删除
------其他解决方案--------------------
不对 你的b是哪一张表 你这刚写肯定错
------其他解决方案--------------------
写错了。。我那一大串太乱了就给简化了一下 本来是右链接一张表的
------其他解决方案--------------------
给出具体测试数据 把格式整理好点
------其他解决方案--------------------
Create table Test
(
Name varchar(20),
No varchar(20),
Type int
)
Go
Insert Into Test
Select '张三','123456789',1
例如是这样的,fieldtype:1代表座机 2代表手机
name field fieldtype
李 01058210000 1
王 13512555685 2
李 01052810001 1
想出来这样的效果,'.'请忽略
姓名 ........ 座机 ....................................................... 手机
李......01058210000,01052810001
王 .....................................................................13512555685
如果李有手机还是会显示在李的手机列
我现在能出来普通行转列的效果
姓名 座机 手机
李 01058210000
王 13512555685
请问可以实现吗?以下是我的代码
select a.seqno,a.compid,a.name,
max(case b.fieldtype when 1 then field else '' end) 座机,
max(case b.fieldtype when 2 then field else '' end) 手机
from table1 a
group by a.name,a.seqno,a.compid
------最佳解决方案--------------------
select 姓名,stuff((select ','+field from tb tb2 where fieldtype=1 and tb2.姓名=tb1.姓名 for xml path('')),1,1,'') 座机,stuff((select ','+field from tb tb2 where fieldtype=2 and tb2.姓名=tb1.姓名 for xml path('')),1,1,'') 手机 from tb tb1 group by tb1.姓名
------其他解决方案--------------------
该回复于2012-11-23 09:53:27被版主删除
------其他解决方案--------------------
不对 你的b是哪一张表 你这刚写肯定错
------其他解决方案--------------------
写错了。。我那一大串太乱了就给简化了一下 本来是右链接一张表的
------其他解决方案--------------------
给出具体测试数据 把格式整理好点
------其他解决方案--------------------
Create table Test
(
Name varchar(20),
No varchar(20),
Type int
)
Go
Insert Into Test
Select '张三','123456789',1