来看看这sql语句该如何写

来看看这sql语句该怎么写
来看看这sql语句该如何写

如图是全国各省市的行政编号及名称
我的需求是 多出来2列显示该县市对应的上一级行政编号及名称
例如 330100 杭州市 330000 浙江省
          330185 临安市 330100 杭州市
来看看这sql语句该如何写
------解决思路----------------------
应该可以取后三位 然后自己去构造一个ID。

后三位对100求余,取整可以得到层级。
------解决思路----------------------
With table1(CodeId, CodeName) AS (
    SELECT '330000','浙江省' UNION ALL
    SELECT '330100','杭州市' UNION ALL
    SELECT '330101','市辖区' UNION ALL
    SELECT '330185','临安市'
)
,t AS (
    -- 市
    SELECT c.*,
           p.CodeId PCodeId,
           p.CodeName PCodeName
      FROM table1 c
      JOIN table1 p
        ON p.CodeId LIKE '__0000'
       AND LEFT(p.CodeId,2) = LEFT(c.CodeId,2)
     WHERE c.CodeId NOT LIKE '__0000'
       AND c.CodeId LIKE '____00'
    UNION ALL -- 县
    SELECT c.*,
           p.CodeId PCodeId,
           p.CodeName PCodeName
      FROM table1 c
      JOIN table1 p
        ON p.CodeId LIKE '____00'
       AND LEFT(p.CodeId,4) = LEFT(c.CodeId,4)
     WHERE c.CodeId NOT LIKE '____00'
)
SELECT * FROM t ORDER BY CodeID

CodeId CodeName PCodeId PCodeName
------ -------- ------- ---------
330100 杭州市   330000  浙江省
330101 市辖区   330100  杭州市
330185 临安市   330100  杭州市