基于分组依据/父行的Oracle SQL索引行
我有一个表,它通过值引用同一个表中的行 示例表:基于分组依据/父行的Oracle SQL索引行,sql,oracle,Sql,Oracle,我有一个表,它通过值引用同一个表中的行 示例表: 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 q
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(这样它就不会为null),在本例中
- 1根父级-父级(0)=1
- 根父级有1lvl子级-父级(1)=2;5.六,
- 1lvl子级有2lvl子级-父级(2)=3;4.8.父母(5)=7。父母(6)一无所有
- 2lvl子级有3lvl子级-父级(3)=9;10父母(4)什么都没有。父母(8)一无所有
- 没有lvl4儿童或任何深度超过4的儿童
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
我计划添加此列,因此查询只执行一次。我已经选择了独立的深度行,但是我真的不知道如何在分组内/分组间计数(即使这是可能的)
另外,如果您能提供更好/更好的列名建议,我们将不胜感激。用户行号()
select mt.*, row_number() over(partition by parent_id order by id) - 1 as rn
from MyTable mt