查询问题 求转换的sql 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 id列可以不要CREATE TABLE SCOTT.TEST( CODE VARCHAR2(10 BYTE), NAME VARCHAR2(10 BYTE), SUPERITEM VARCHAR2(10 BYTE), LEVELNO VARCHAR2(2 BYTE)) --第2层的name2没有解决,你再看看吧SQL> select * from test; ID CODE NAME SUPERITE LEVELNO---------- ------------ ------------------ -------- ---------- 1 01 江苏省 0 1 2 0101 常州市 01 2 3 0102 南京市 01 2 4 010101 武进区 0101 3 5 02 山东省 0 1 6 0201 济南市 02 2 7 0202 青岛市 02 2 8 0203 淄博市 02 2 9 020101 历城区 0201 39 rows selected.SQL> SELECT code itemid,connect_by_root(code) code1, 2 connect_by_root(NAME) name1, 3 Decode(levelno,2,code,3,superitemid,NULL) code2, 4 Decode(levelno,1,NULL,NAME) name2 , 5 Decode(levelno,3,code,NULL) code3, 6 Decode(levelno,3,NAME,NULL) name3 7 FROM test 8 START WITH superitemid='0' 9 CONNECT BY PRIOR code=superitemid 10 ORDER BY id 11 ;ITEMID CODE1 NAME1 CODE2 NAME2 CODE3 NAME3------------ ------------ ------------------ ------------ ------------------ ------------ ----------01 01 江苏省0101 01 江苏省 0101 常州市0102 01 江苏省 0102 南京市010101 01 江苏省 0101 武进区 010101 武进区02 02 山东省0201 02 山东省 0201 济南市0202 02 山东省 0202 青岛市0203 02 山东省 0203 淄博市020101 02 山东省 0201 历城区 020101 历城区9 rows selected.SQL> --OK了SQL> SQL> SELECT code itemid,connect_by_root(code) code1, 2 connect_by_root(NAME) name1, 3 Decode(levelno,2,code,3,superitemid,NULL) code2, 4 Decode(levelno,1,NULL,3,(SELECT NAME FROM test WHERE code=a.superitemid),name) name2 , 5 Decode(levelno,3,code,NULL) code3, 6 Decode(levelno,3,NAME,NULL) name3 7 FROM test a 8 START WITH superitemid='0' 9 CONNECT BY PRIOR code=superitemid 10 ORDER BY id 11 ;ITEMID CODE1 NAME1 CODE2 NAME2 CODE3 NAME3------------ ------------ ------------------ ------------ ------------------ ------------ ----------01 01 江苏省0101 01 江苏省 0101 常州市0102 01 江苏省 0102 南京市010101 01 江苏省 0101 常州市 010101 武进区02 02 山东省0201 02 山东省 0201 济南市0202 02 山东省 0202 青岛市0203 02 山东省 0203 淄博市020101 02 山东省 0201 济南市 020101 历城区9 rows selected.SQL> SQL优化求助 请问用游标能指向某条记录吗 ODBC Drivers 错误 '80004005' 加上where条件就报错 oracle forms6i----使用call_form过程致使父窗体还原问题求助 sql语句,高手帮忙! 如何将一个表中检索的值作为另一个表的字段列表? oracle 导出数据时,出现不懂的问题,帮忙哦 关于数据库备份和恢复的问题? 存储过程问题。 存储过程参数引用问题 一个奇怪的问题,连接时卡死,无响应 suse 下 能exp 不能imp 的问题
id列可以不要
CREATE TABLE SCOTT.TEST
(
CODE VARCHAR2(10 BYTE),
NAME VARCHAR2(10 BYTE),
SUPERITEM VARCHAR2(10 BYTE),
LEVELNO VARCHAR2(2 BYTE)
)
--第2层的name2没有解决,你再看看吧SQL> select * from test; ID CODE NAME SUPERITE LEVELNO
---------- ------------ ------------------ -------- ----------
1 01 江苏省 0 1
2 0101 常州市 01 2
3 0102 南京市 01 2
4 010101 武进区 0101 3
5 02 山东省 0 1
6 0201 济南市 02 2
7 0202 青岛市 02 2
8 0203 淄博市 02 2
9 020101 历城区 0201 39 rows selected.SQL> SELECT code itemid,connect_by_root(code) code1,
2 connect_by_root(NAME) name1,
3 Decode(levelno,2,code,3,superitemid,NULL) code2,
4 Decode(levelno,1,NULL,NAME) name2 ,
5 Decode(levelno,3,code,NULL) code3,
6 Decode(levelno,3,NAME,NULL) name3
7 FROM test
8 START WITH superitemid='0'
9 CONNECT BY PRIOR code=superitemid
10 ORDER BY id
11 ;ITEMID CODE1 NAME1 CODE2 NAME2 CODE3 NAME3
------------ ------------ ------------------ ------------ ------------------ ------------ ----------
01 01 江苏省
0101 01 江苏省 0101 常州市
0102 01 江苏省 0102 南京市
010101 01 江苏省 0101 武进区 010101 武进区
02 02 山东省
0201 02 山东省 0201 济南市
0202 02 山东省 0202 青岛市
0203 02 山东省 0203 淄博市
020101 02 山东省 0201 历城区 020101 历城区9 rows selected.SQL>
--OK了
SQL>
SQL> SELECT code itemid,connect_by_root(code) code1,
2 connect_by_root(NAME) name1,
3 Decode(levelno,2,code,3,superitemid,NULL) code2,
4 Decode(levelno,1,NULL,3,(SELECT NAME FROM test WHERE code=a.superitemid),name) name2 ,
5 Decode(levelno,3,code,NULL) code3,
6 Decode(levelno,3,NAME,NULL) name3
7 FROM test a
8 START WITH superitemid='0'
9 CONNECT BY PRIOR code=superitemid
10 ORDER BY id
11 ;ITEMID CODE1 NAME1 CODE2 NAME2 CODE3 NAME3
------------ ------------ ------------------ ------------ ------------------ ------------ ----------
01 01 江苏省
0101 01 江苏省 0101 常州市
0102 01 江苏省 0102 南京市
010101 01 江苏省 0101 常州市 010101 武进区
02 02 山东省
0201 02 山东省 0201 济南市
0202 02 山东省 0202 青岛市
0203 02 山东省 0203 淄博市
020101 02 山东省 0201 济南市 020101 历城区9 rows selected.SQL>