【问题标题】:How to define the number of levels in a hierarchy using sql?如何使用 sql 定义层次结构中的级别数?
【发布时间】:2017-06-20 13:30:50
【问题描述】:

我的情况如下。我有一个包含产品层次结构的表。下表是数据集的摘录:

child    parent
  1        2
  2        3
  4        5
  6        7

我想添加一个包含层次结构(子级)深度的列。如下:

child    parent   depth
  1        2        2
  2        3        1
  4        5        1
  6        7        1

我将如何在 oracle 中做到这一点?谢谢!

【问题讨论】:

  • 您是否使用至少 11g R2?那么递归公用表表达式(CTE)是可能的
  • 为什么第一行和第二行的深度分别是3和2?它们不应该有 2 和 1 的深度吗?
  • 关于深度你是对的。我改变了它。谢谢

标签: sql oracle hierarchy


【解决方案1】:

类似:

SELECT child, parent, level
FROM   your_table
START WITH parent NOT IN ( SELECT child FROM your_table )
CONNECT BY parent = PRIOR child;

输出:

CHILD PARENT LEVEL
----- ------ -----
    1      2     2
    2      3     1
    4      5     1
    6      7     1

【讨论】:

  • 看起来和我要找的完全一样。谢谢你。您选择的关卡来自哪里?
  • @PatrickBalada LEVEL pseudocolumn 由分层查询生成。
  • 感谢您的快速回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2018-01-03
  • 1970-01-01
  • 2013-07-04
  • 2023-04-03
相关资源
最近更新 更多