Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据顺序将多个oracle表分组到一个表中_Oracle - Fatal编程技术网

根据顺序将多个oracle表分组到一个表中

根据顺序将多个oracle表分组到一个表中,oracle,Oracle,我是甲骨文的新手。我有三张桌子: 启动\u节点: ref_id id orn -------------------- 1 100 0 1 200 1 1 300 2 1 400 3 2 160 0 2 260 1 2 360 2 2 460 3 ref_id id orn ---------

我是甲骨文的新手。我有三张桌子: 启动\u节点:

ref_id    id     orn
--------------------
1         100    0
1         200    1
1         300    2
1         400    3
2         160    0
2         260    1
2         360    2
2         460    3
ref_id    id     orn
--------------------
1         100     0
1         200     1
1         300     2
1         400     3
1         1000    4
1         2000    5
1         150     6
1         250     7
1         350     8
1         450     9
2         160     0
2         260     1
2         360     2
2         460     3
2         1500    4
2         2500    5
2         3500    6
2         4500    7
2         5500    8
2         170     9
2         270     10
2         370     11
2         470     12
中间节点:

ref_id    id     orn
--------------------
1        1000    0
1        2000    1
2        1500    0
2        2500    1
2        3500    2
2        4500    3
2        5500    4
结束节点:

ref_id    id     orn
--------------------
1         150    0
1         250    1
1         350    2
1         450    3
2         170    0
2         270    1
2         370    2
2         470    3
我需要根据ref_id和orn将它们分组到一个表中,其中orn是开始节点、中间节点和结束节点的顺序:

启动\u节点:

ref_id    id     orn
--------------------
1         100    0
1         200    1
1         300    2
1         400    3
2         160    0
2         260    1
2         360    2
2         460    3
ref_id    id     orn
--------------------
1         100     0
1         200     1
1         300     2
1         400     3
1         1000    4
1         2000    5
1         150     6
1         250     7
1         350     8
1         450     9
2         160     0
2         260     1
2         360     2
2         460     3
2         1500    4
2         2500    5
2         3500    6
2         4500    7
2         5500    8
2         170     9
2         270     10
2         370     11
2         470     12

有关于如何开始的提示吗?

尝试加入表中的选择,例如:

SELECT  1 table_id,
        ref_id,
        id,
        orn
FROM    start_nodes

根据需要订购连接。使用此表作为对所需列的查询的内部查询。

您可以使用
UNION ALL
实现它,如下所示

SELECT REF_ID, ID, ROW_NUMBER() OVER (PARTITION BY REF_ID ORDER BY NOD, ORN) - 1 AS ORN
FROM
(SELECT T.*, 1 AS NOD FROM START_NODES T
UNION ALL
SELECT T.*, 2 AS NOD FROM MIDDLE_NODES T
UNION ALL
SELECT T.*, 3 AS NOD FROM END_NODES T)