行转列 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
请高手赐教。谢谢
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
)
原文地址
- 行转列 SQL ,connect by level
- CONNECT BY LEVEL
- Oracle connect by level
- SQL 中 CONNECT BY 的使用 (LEVEL)
- oracle connect by level 应用
- level、connect by、rownum使用
- oracle connect by level 应用
- SQL CONNECT BY
- level和 connect by 的结合使用
- connect by level 100行限制
- connect by level语法的理解
- oracle 递归 start with connect by level
- 深入理解connect by level<xxx
- oracle connect by level 的用法
- ORACLE层次查询学习 level connect by
- Oracle connect by..start with/level
- oracle connect by level start with使用
- 深入理解connect by level<xxx
- Java中的23种设计模式
- BS与CS的联系与区别
- VC++深入详解 学习笔记(更新中)
- python得到汉字拼音首字母
- 新的BLog。新的启动
- 行转列 SQL ,connect by level
- 修复SQL2000数据库置疑时出现的错误
- 使用Direction的include指令和errorPage的一点心得
- Pku1163
- 宏定义
- C中的宏定义
- pku1005
- pku1207
- pku1458