sql 行转列
本帖最后由 QAAnAfternoon 于 2013-03-29 16:27:41 编辑
DATA:
ID SID NAME PROD SERIES NUM
1 1001 电脑 PC 台式机 100
3 1001 电脑 WS 服务站 200
2 1002 手机 A1 智能手机 200
4 1003 投影仪 PJ 商用型 100
98 1003 投影仪 PJ 专业型 200
100 1003 投影仪 PJ 家用型 100
例如一次查询出以上信息,现在需要处理成
SID NAME PROD1 SERIES1 NUM1 PROD2 SERIES2 NUM2
1001 电脑 PC 台式机 100 WS 服务站 200
1002 手机 A1 智能手机 200 null null null
1003 投影仪 PJ 商用型 100 PJ 专业行 200
如果同一个SID出现2条以上信息,只需要2条
------解决方案--------------------with cte as(
select *,row=row_number()over(partition by sid order by getdate()) from tb
)
select a.sid,a.name,prod1=a.prod,series1=a.series,num1=a.num,prod2=b.prod,series2=b.series,num2=b.num
from cte a left join cte b on a.name=b.name and b.row=2 where a.row=1