请教一个关于表转换的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
请高手赐教。谢谢
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
)
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
)
原文地址