行转列 SQL ,connect by level

来源:互联网 发布:换一个淘宝账号开开店 编辑:程序博客网 时间:2024/05/17 08:51

请教一个关于表转换的sql语句

我有一张表:
290        集客部        70420        35.55        68233
205        海沧        20393        35.11        18843
204        翔安        17893        34.16        17543
203        集美        22543        24.55        21789
202        同安        25779        21.75        24526
201        营销部        86611        25.19        73673
0        全区        243639        28.24        224607

现在要用sql语句实现行列变换。变换后为:
290      205     204     203     202      201       0
集客部     海沧     翔安     集美      同安      营销部     全区
70420    20393   17893   22543   25779    86611    243639
35.55    35.11   34.16   24.55   21.75    25.19    28.24
68233    18843   17543   21789   24526    73673    224607

请高手赐教。谢谢
 
解决方案:
select    decode(a, 290, b) "290",
             decode(a, 205, b) "205",
             decode(a, 204, b) "204",
             decode(a, 203, b) "203",
             decode(a, 202, b) "202",
             decode(a, 201, b) "201",
             decode(a, 0, b) "0"
from (
 select
   id a
  ,case when lv=1 then to_char(a.id)
             when lv=2 then to_char(a.name)
             when lv=3 then to_char(a.col1)
             when lv=4 then to_char(a.col2)
             when lv=5 then to_char(a.col3)
      else to_char(a.id) end b
  ,lv e
 from temp1 a,(select level lv from dual connect by level<=5) b
 )
 
原文地址