oracle层次化查询(行政区划三级级联)

作者:小涵 | 来源:互联网 | 2018-07-15 10:38

阅读: 1975

现在将上面的行政区划按代码分为三个级别:省(后四位为0)市(后两位为0)县,同时分别标出他们的级别,这样的话,便于后期根据不同的级别查询。

现在将上面的行政区划按代码分为三个级别:省(后四位为0)/市(后两位为0)/县,同时分别标出他们的级别,这样的话,便于后期根据不同的级别查询。

前提:

数据库表DM_xzqh样例(部分):

代码如下:

DM MC

230000 黑龙江省

230100 哈尔滨市

230101 市辖区

230102 道里区

232700 大兴安岭

230103 南岗区

230104 道外区

230108 平房区

230109 松北区

230110 香坊区

230111 呼兰区

230112 阿城区

230123 依兰县

238000 农垦分局

230124 方正县

230125 宾县

230126 巴彦县

230127 木兰县

230128 通河县

230129 延寿县

230182 双城市

230183 尚志市

现在将上面的行政区划按代码分为三个级别:省(后四位为0)/市(后两位为0)/县,同时分别标出他们的级别,这样的话,便于后期根据不同的级别查询。

首先,根据上面表拓展出新的一行sjbm,该行用于表示该行政区划所属的上级行政区划。具体代码如下:

代码如下:

select t.dm,t.mc,case

when substr(t.dm,3)='0000' then 1

when substr(t.dm,5)='00' then to_number(substr(t.dm,1,2)||'0000')

when substr(t.dm,5)!='00' then to_number(substr(t.dm,1,4)||'00')

else 0

end sjbm from dm_xzqh t

结果如下:

序号 DM MC SJBM

1 230000 黑龙江省 1

2 230100 哈尔滨市 230000

3 230101 市辖区 230100

4 230102 道里区 230100

5 232700 大兴安岭 230000

6 230103 南岗区 230100

7 230104 道外区 230100

8 230108 平房区 230100

9 230109 松北区 230100

10 230110 香坊区 230100

11 230111 呼兰区 230100

12 230112 阿城区 230100

13 230123 依兰县 230100

14 238000 农垦分局 230000

15 230124 方正县 230100

16 230125 宾县 230100

17 230126 巴彦县 230100

18 230127 木兰县 230100

19 230128 通河县 230100

20 230129 延寿县 230100

21 230182 双城市 230100

22 230183 尚志市 230100

然后,就可以利用oracle的层次关系将该查询出的数据分级了,具体代码如下:

代码如下:

select level,dm,mc,sjbm from

(select t.dm,t.mc,case

when substr(t.dm,3)='0000' then 1

when substr(t.dm,5)='00' then to_number(substr(t.dm,1,2)||'0000')

when substr(t.dm,5)!='00' then to_number(substr(t.dm,1,4)||'00') end sjbm from dm_xzqh t)

[where level=2 ]--该条件语句用于查询具体的每一个级别的行政区划

start with sjbm=1

connect by prior dm=sjbm

[order by level];

结果如下:

序号 level DM MC SJBM

1 1 230000 黑龙江省 1 //省 ,level->1

2 2 230100 哈尔滨市 230000//市,level->2

3 3 230101 市辖区 230100//县,level->3

4 3 230102 道里区 230100

5 3 230103 南岗区 230100

6 3 230104 道外区 230100

7 3 230108 平房区 230100

8 3 230109 松北区 230100

9 3 230110 香坊区 230100

10 3 230111 呼兰区 230100

11 3 230112 阿城区 230100

12 3 230123 依兰县 230100

13 3 230124 方正县 230100

14 3 230125 宾县 230100

15 3 230126 巴彦县 230100

16 3 230127 木兰县 230100

17 3 230128 通河县 230100

18 3 230129 延寿县 230100

19 3 230182 双城市 230100

20 3 230183 尚志市 230100

21 3 230184 五常市 230100

22 2 232700 大兴安岭地区 230000

吐了个 "CAO" !

吐个槽吧,看都看了

oracle查询第三行,oracle层次化查询(行政区划三级级联)相关推荐

  1. oracle 获取第三行,Oracle 11g 第三章知识点总结——单行函数

    Oracle 11g 第三章知识点总结--单行函数 知识点预览 单行函数 单行函数 1. SQL 函数 2.两种 SQL 函数 3.单行函数 a) 操作数句对象 b)接受函数返回一个结果 c)只对一行 ...

  2. oracle 当前top sql,Oracle top 查询TOP SQL

    有时Oracle数据库服务器,系统CPU爆高,通过Top命令可以查看到占用CPU最高的进程 我们需要记住前几个TOP的pid号,带入下面的SQL,到数据库中查询运行的进程.服务器.用户.SQL.等待等 ...

  3. 查询oracle模式对象信息,ORACLE 模式和模式对象

    模式和模式对象一个模式(schema)为模式对象(scehma object)的一个集合,每一个数据库用户对应一个模式.模式对象为直接引用数据库数据的逻辑结构,模式对象包含如表.视图.索引.聚集.序列 ...

  4. python使用pandas基于时间条件查询多个oracle数据表

    python使用pandas基于时间条件查询多个oracle数据表 目录 python使用pandas基于时间条件查询多个orcale数据表 #orcale数据连接

  5. oracle存储过程 多条件,Oracle多条件查询实际分页存储过程实操

    以下的文章主要是介绍Oracle多条件查询分页存储过程,以下就是Oracle多条件查询分页存储过程具体方案的描述,希望在你今后的学习中会有所帮助.将业务逻辑放到Oracle中使得后台代码很精简,Ora ...

  6. oracle 10g 连接语句,Oracle 10g数据库基础之基本查询语句-下-连接子查询

    实验18:表的连接查询 该实验的目的是掌握基本的联合查询. 表的连接 我们要从多张表中要得到信息,就得以一定的条件将表连接在一 实验18:表的连接查询 该实验的目的是掌握基本的联合查询. 表的连接 我 ...

  7. oracle查看执行最慢与查询次数最多的sql语句及其执行速度很慢的问题分析

    oracle查看执行最慢与查询次数最多的sql语句 注:本文来源 于<oracle查看执行最慢与查询次数最多的sql语句> 前言 在ORACLE数据库应用调优中,一个SQL的执行次数/频率 ...

  8. oracle每小时分组查询,Oracle 天内按小时分组查询有关问题

    Oracle 天内按小时分组查询问题 本帖最后由 hao123yao 于 2013-03-08 11:30:56 编辑 表名c_data_01.表结构: uuid   c_id      c_time ...

  9. 查询 oracle_关于oracle和mysql数据库的查询问题

    近期在写mysql数据库报表时,需要给查询排序后的数据增加一列序号,用来统计查询数据的排名,在这里遇到一个视图和排序冲突的问题. Part 1 在oracle数据库中可以直接给查询语句增加一列ROWN ...

最新文章

  1. 【C++】多线程互斥锁、条件变量
  2. va_list、va_start和va_end使用
  3. 《JavaScript快速全栈开发》作者Azat Mardanov:现在是拥抱Node技术栈的最佳时机
  4. Codeforces problem 67E(多边形求内核的应用)
  5. 小学数学动画 android,小学数学动画教学下载-小学数学动画 安卓版v5.0-pc6手机下载...
  6. SmartGit破解使用的个人方法
  7. ACOUG China Tour 2019上海站,等你来约!
  8. 癌症世界难题_癌强大的真相被发现了,这4个难题不攻克,癌症难以治愈
  9. slope one算法matlab,求助我这个寻峰算法该怎么提高灵敏度
  10. 8盏流水灯反向闪烁c语言,课程设计(论文)_利用8255A芯片实现流水灯闪烁设计.doc...
  11. Atitit 数据库核心技术index索引技术 btree hash lsm fulltxt目录1.1. HASH
  12. CSS 的相对单位 em 与 ex
  13. 台式计算机关机后自行重启,台式电脑点关机后又自动重启怎么处理
  14. python输入名字配对情侣网名_输入名字自动取情侣网名,输入名字自动取网名
  15. (HG模块,简洁明了)Hourglass Module介绍
  16. 微信云服务器socket,微信小程序使用Socket的实例
  17. 【论文笔记】ParamE模型学习
  18. Android黄油刀插件使用记录
  19. linux统计单拷贝基因家族,为什么要进行基因家族分析?
  20. 网盘江湖混战难打 百度为何坚持加码?

热门文章

  1. [MB855]变砖解决
  2. 芯片TOPS的真实性 - 解释 ( 标量 ,矢量, 张量)
  3. 成人用品的UML建模
  4. asp mysql查询_asp的 条件查询
  5. 简化版的DRCNN代码(Python)
  6. Writing an LLVM Pass
  7. 气象ts评分_中国气象局--国家气候中心--气候系统监测·诊断·预测·评估
  8. rowid会变化么_基情满满!美团amp;饿了么外卖小哥组CP出道
  9. 2011年度中国地区安全威胁大事记
  10. DES加解密算法原理详解与实现