有一个树型控件的描述是:
中国地区
-广东
-汕头
-广州
-深圳
-福建
-福州
-连江县
-闽清县对应的基表用:
area mk re serno
中国 0 国家 1
广东 1 省份 1-2
福建 1 省份 1-3
汕头 2 地市 1-2-2
广州 2 地市 1-2-3
深圳 2 地市 1-2-4
福州 3 地市 1-3-2
连江县 2 县分 1-3-2-2
闽清县 2 县分 1-3-2-3 现要求高手用一条SQL语句统计为以下结果:十分感谢!
中国 广东 汕头
中国 广东 广州
中国 广东 深圳
中国 福建 福州 连江县
中国 福建 福州 闽清县
高手高手高手,不用写过程可以实现吗????
中国地区
-广东
-汕头
-广州
-深圳
-福建
-福州
-连江县
-闽清县对应的基表用:
area mk re serno
中国 0 国家 1
广东 1 省份 1-2
福建 1 省份 1-3
汕头 2 地市 1-2-2
广州 2 地市 1-2-3
深圳 2 地市 1-2-4
福州 3 地市 1-3-2
连江县 2 县分 1-3-2-2
闽清县 2 县分 1-3-2-3 现要求高手用一条SQL语句统计为以下结果:十分感谢!
中国 广东 汕头
中国 广东 广州
中国 广东 深圳
中国 福建 福州 连江县
中国 福建 福州 闽清县
高手高手高手,不用写过程可以实现吗????
connect by 条件2
where 条件3;
其实你只要把表改成
area mk re up_mk
中国 0 国家
广东 1 省份 0
福建 2 省份 0
汕头 3 地市 1
广州 4 地市 1
深圳 5 地市 1
福州 6 地市 2
连江县 7 县分 6
闽清县8 县分 6
---------- ---------- ---------- --------------------
中国 0 国家 1
广东 1 省份 1-2
福建 1 省份 1-3
汕头 2 地市 1-2-2
广州 2 地市 1-2-3
深圳 2 地市 1-2-4
福州 3 地市 1-3-2
连江县 2 县分 1-3-2-2
闽清县 2 县分 1-3-2-3已选择9行。scott@ORA1> SELECT a.*, level ln, sys_connect_by_path(area, ' ') x
2 FROM
3 (
4 select a.*, case when length(serno) = 1 then null
5 else substr(serno, 1, length(serno) - 2)
6 end parent_serno
7 from a
8 ) a
9 where CONNECT_BY_ISLEAF = 1
10 connect by prior serno = parent_serno
11 start with mk = 0
12 ;AREA MK REMARK SERNO PARENT_SER LN X
---------- ---------- ---------- -------------------- ---------- ---------- -------------------------
汕头 2 地市 1-2-2 1-2 3 中国 广东 汕头
广州 2 地市 1-2-3 1-2 3 中国 广东 广州
深圳 2 地市 1-2-4 1-2 3 中国 广东 深圳
连江县 2 县分 1-3-2-2 1-3-2 4 中国 福建 福州 连江县
闽清县 2 县分 1-3-2-3 1-3-2 4 中国 福建 福州 闽清县
2) 才放20分,就要找真正的高手,少!
from (select t.*, case when length(serno) = 1 then null
else substr(serno, 1, length(serno) - 2)
end parent_serno
from t) t
start with serno='1'
connect by prior serno = parent_serno然后根据level过滤你想要的信息