繁体   English   中英

基于group by / parent行的Oracle SQL索引行

[英]Oracle SQL index rows based on group by/ parent row

我有1个表,该表按值引用同一表中的行

表格示例:

ID  PARENT_ID   NAME
1   0           john
2   1           jane
3   2           smigy
4   2           gujo
5   1           duby
6   1           ruby
7   5           foo
8   2           bar
9   3           baz
10  3           qux

根父母有父母0(只是它不会为空),在这种情况下,

  • 1个root-parent-parent(0)= 1。
  • 根父母有1lvl个孩子-parent(1)= 2; 5; 6。
  • 1lvl个孩子有2lvl个孩子-parent(2)= 3; 4; 8。 母体(5)= 7。 parent(6)没有任何内容。
  • 2lvl个孩子有3lvl个孩子-parent(3)= 9; 10。 parent(4)没有任何内容。 parent(8)没有任何内容。
  • 没有lvl4个孩子或任何深度超过4岁的孩子。

而且我需要创建一个脚本(大概是SQL查询-需要避免函数/过程/等),该脚本将根据行在其父级下的位置来对行进行索引。 就像我要选择所有root-parent并得到(rownum-1)

目标表应如下所示:

ID  PARENT_ID   NAME    ROW_INDEX
1   0           john    0
2   1           jane    0
3   2           smigy   0
4   2           gujo    1
5   1           duby    1
6   1           ruby    2
7   5           foo     0
8   2           bar     2
9   3           baz     0
10  3           qux     1

我打算添加此列,因此查询将仅执行一次。 我通过选择单独的深度行进行游戏,但是我真的不知道如何在分组内部/分组之间进行计数(即使可能的话)。

PS一个更好/更好的列名建议也将不胜感激。

用户row_number()

select mt.*, row_number() over(partition by parent_id order by id) - 1 as rn
from MyTable mt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM