代码之家  ›  专栏  ›  技术社区  ›  Haminteu

从行号SQL获取ID

  •  0
  • Haminteu  · 技术社区  · 6 年前

    我有下表:

    Code     ParentCode     oItem
    -----------------------------
    A        null           Item 001
    B        A              Item 002
    C        A              Item 003
    D        C              Item 004
    E        B              Item 005
    

    现在,我想得到行号,那么结果应该是:

    Rn        Code     ParentCode     oItem
    ------------------------------------------
    1         A        null           Item 001
    2         B        A              Item 002
    3         C        A              Item 003
    4         D        C              Item 004
    5         E        B              Item 005
    

    我的问题是,查询如何获得以下结果:

    Rn        Code     RnParent   ParentCode     oItem
    --------------------------------------------------------
    1         A        null       null           Item 001
    2         B        1          A              Item 002
    3         C        1          A              Item 003
    4         D        3          C              Item 004
    5         E        2          B              Item 005
    

    如果你在结果表上看到, parentcode 实际上是 code 我需要知道 id 父代码 基于 密码 属于 Rn

    请告知。
    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gordon Linoff    6 年前

    如果我理解正确,你只需要 rn 对于 parentcode 。你可以用 join :

    with t as (
          select row_number() over (order by code) as rn, t.*
          from t
         )
    select t.*, tp.rn as parentrn
    from t left join
         t tp
         on t.parentcode = tp.code