如何把行转换成列(求助高手帮忙,给高分)
例如:
一条记录:
pid ZeroP1 ZeroP2,ZeroP3,OneP1,OneP2,OneP3,TwoP1,TwoP2,TwoP3,ThreeP1,ThreeP2,ThreeP3,FourP1,FourP2,FourP3
现在要求把这条记录转化为如下三条记录:
pid ZeroP1 ZeroP2 ZeroP3
pid OneP1 OneP2 OneP3
pid TwoP1 TwoP2 TwoP3
pid ThreeP1 ThreeP2 ThreeP3
pid FourP1 FourP2 FourP3
------解决方案--------------------select pid, ZeroP1, ZeroP2,ZeroP3 from 表名
union all
select pid, OneP1,OneP2,OneP3 from 表名
union all
select pid, TwoP1,TwoP2,TwoP3 from 表名
union all
select pid, ThreeP1,ThreeP2,ThreeP3 from 表名
union all
select pid, FourP1,FourP2,FourP3 from 表名
------解决方案--------------------select * from (
select pid, ZeroP1, ZeroP2,ZeroP3 from 表名
union all
select pid, OneP1,OneP2,OneP3 from 表名
union all
select pid, TwoP1,TwoP2,TwoP3 from 表名
union all
select pid, ThreeP1,ThreeP2,ThreeP3 from 表名
union all
select pid, FourP1,FourP2,FourP3 from 表名) a order by pid
------解决方案--------------------上面都对
------解决方案--------------------union all
将两个或更多查询的结果组合为单个结果集,
该结果集包含联合查询中的所有查询的全部行