2008年11月18日星期二

ORACLE列转行

今天同事问我怎么进行列转行(ORACLE)里面,他需要对求和所得的一行6列数据,转换成6行一列数据。举例如下:
select 11 num1,15 num2 from dual
得到的结果应该是:
num1 |num2
11 15
需要转成:
num |name
11 num1
15 num2

写出来的SQL如下(其他的数据库也可以套用这个):
select decode(rownum,1,num1,num2) num,decode(rownum,1,'num1','num2') name from
(select 11 num1,15 num2 from dual connect by level<=2)
如果列的数目再多一些的话只需吧level增大,多加decode判断即可。当然出于便于阅读的原因我还是建议将decode换成case。

没有评论: