前言:
今天我们对“oracle省市表”大概比较关怀,看官们都想要学习一些“oracle省市表”的相关文章。那么小编也在网摘上搜集了一些对于“oracle省市表””的相关资讯,希望大家能喜欢,咱们一起来了解一下吧!问题描述
在我们日常统计中,经常需要统计到全国各地区的一些销售情况,而全国各地区的行政区划是怎么样的,我们需要做一张省市区的基础表来一一对应。
问题分析
我们在网上通过查找每个省市区的地区编码,可以获取一份完整的省市区SQL脚本。如下图:
我们通过分析可以得出省市区的层级关系,这样我们就可以根据这个层级关系来制作一份完整的行政区划表了。
解决办法
我们获取的原始表的表名叫China,下面我们来制作这个行政区划表
WITH CTE AS ( SELECT ID,NAME,PId,1 AS LEVEL FROM China WHERE pId = 0 UNION ALL SELECT t.id,t.NAME,t.pId,cte. LEVEL + 1 AS LEVEL FROM China t JOIN CTE ON t.pId = CTE.id)
使用我们之前介绍的递归查询,将PID和ID进行关联,找出每条记录的层级,用1,2,3,4来表示,如下图:
有了每个城市的层级标记,我们就可以根据层级标记来指定它们具体的城市等级。
SELECT t1.name AS [省] ,t2.name AS [市] ,t3.name AS [县] ,t4.name AS [区]FROM (SELECT * FROM CTE WHERE LEVEL=1) AS t1 LEFT JOIN (SELECT * FROM CTE WHERE LEVEL=2) AS t2 ON t1.id=t2.pIdLEFT JOIN(SELECT * FROM CTE WHERE LEVEL=3) AS t3 ON t2.id=t3.pIdLEFT JOIN(SELECT * FROM CTE WHERE LEVEL=4) AS t4 ON t3.id=t4.pId
如下图:
这样一份完整的城市区划表就建好了。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #oracle省市表