首页 > 解决方案 > 我怎样才能做到这一点?

问题描述

下面是数据集

P1      A1      N1

null    null    0
2776646 2776621 1
2776646 2776622 2
2776642 2776645 3
2776642 2776648 4
2776642 2776649 5
2776642 2776647 6
2776642 2776646 7
0       2776641
0       2776642

我需要在此处添加另一列,称为 parent_n1,它将具有 N1 中的值,属于 A1 的父级 (P1)。例如:

对于 A1.2776621 P1 = 2776646 和 A1 2776646 = N1.7,因此该行的 parent_n1 变为 7。同样,查询应为每一行返回以下输出:

P1      A1      N1  Parent_N1

null    null    0   0
2776646 2776621 1   7
2776646 2776622 2   7
2776642 2776645 3   9
2776642 2776648 4   9
2776642 2776649 5   9
2776642 2776647 6   9
2776642 2776646 7   9
0       2776641 8   0
0       2776642 9   0

任何帮助将不胜感激。

标签: sqloracleplsql

解决方案


您可以自行加入表:

select
    t.*,
    coalesce(p.n1, 0) parent_n1
from mytable t
left join mytable p on p.a1 = t.p1

DB Fiddle 上的演示

     P1 | A1 | N1 | PARENT_N1
------: | ------: | -: | --------:
   |    | 0 | 0
2776646 | 2776621 | 1 | 7
2776646 | 2776622 | 2 | 7
2776642 | 2776645 | 3 | 9
2776642 | 2776648 | 4 | 9
2776642 | 2776649 | 5 | 9
2776642 | 2776647 | 6 | 9
2776642 | 2776646 | 7 | 9
      0 | 2776641 | 8 | 0
      0 | 2776642 | 9 | 0

推荐阅读