select 按问题排序
select order by issue
我创建了 BOM table 如下:
i_rownum i_level segment parent
1 0 A1 -
2 1 B1 A1
3 1 B2 A1
4 1 B3 A1
5 1 B4 A1
6 2 C1 B1
7 2 C2 B2
8 2 C3 B3
9 3 D1 C3
10 3 D2 C3
A1 是 B1,B2,B3,B4 的父级; B1 是 C1 的父级; B2 是 C2 的父级;....
但是,要清楚地了解level和subsegment,我希望看到的是:
i_rownum i_level segment parent
1 0 A1 -
2 1 B1 A1
3 2 C1 B1
4 1 B2 A1
5 2 C2 B2
6 1 B3 A1
7 2 C3 B3
8 3 D1 C3
9 3 D2 C3
10 1 B4 A1
我不确定应用 order by 是否可以解决这个问题。你能帮忙吗?非常感谢!
如果您使用的是 Oracle 11g 或更高版本,您可以尝试使用 Recursive Subquery Factoring。
这种查询非常适合遍历像您这样的层次结构。除其他外,它使您有可能遍历 depth-first search order 中的层次结构,这显然是您想要的。
您可以尝试以下方法:
SELECT segment, parent, level
FROM <TABLE>
START WITH PARENT = '-'
CONNECT BY PARENT = PRIOR segment
这只是典型的分层查询,应该可以准确地满足您的需求。此外,如您所见,我在查询中使用了 LEVEL
关键字。您不需要将此信息保存在 table 中,因为 Oracle 会在查询中自行计算级别...
SELECT i_rownum, i_level, segment, parent,level
FROM bom start with parent is null connect by
parent = prior segment;
我认为这应该可行
我创建了 BOM table 如下:
i_rownum i_level segment parent
1 0 A1 -
2 1 B1 A1
3 1 B2 A1
4 1 B3 A1
5 1 B4 A1
6 2 C1 B1
7 2 C2 B2
8 2 C3 B3
9 3 D1 C3
10 3 D2 C3
A1 是 B1,B2,B3,B4 的父级; B1 是 C1 的父级; B2 是 C2 的父级;....
但是,要清楚地了解level和subsegment,我希望看到的是:
i_rownum i_level segment parent
1 0 A1 -
2 1 B1 A1
3 2 C1 B1
4 1 B2 A1
5 2 C2 B2
6 1 B3 A1
7 2 C3 B3
8 3 D1 C3
9 3 D2 C3
10 1 B4 A1
我不确定应用 order by 是否可以解决这个问题。你能帮忙吗?非常感谢!
如果您使用的是 Oracle 11g 或更高版本,您可以尝试使用 Recursive Subquery Factoring。 这种查询非常适合遍历像您这样的层次结构。除其他外,它使您有可能遍历 depth-first search order 中的层次结构,这显然是您想要的。
您可以尝试以下方法:
SELECT segment, parent, level
FROM <TABLE>
START WITH PARENT = '-'
CONNECT BY PARENT = PRIOR segment
这只是典型的分层查询,应该可以准确地满足您的需求。此外,如您所见,我在查询中使用了 LEVEL
关键字。您不需要将此信息保存在 table 中,因为 Oracle 会在查询中自行计算级别...
SELECT i_rownum, i_level, segment, parent,level
FROM bom start with parent is null connect by
parent = prior segment;
我认为这应该可行