0

我的分层查询如下所示:

select ID, PARENT_ID, START_TIME
FROM PROCESS
START WITH ID='X'
CONNECT BY ID=PRIOR PARENT_ID

我的问题是存在具有相同 ID 'X' 的行,我只希望返回最近的行(当一个进程重复时,它的 ID 是相同的 - 无法更改)。此外,我只希望它通过先前的父 ID 连接最近的行。

从文档看来,我无法在 connect by 中进行查询以获取最新的先前 parent_id - 我需要在代码中过滤还是有办法在查询中执行此操作?

4

1 回答 1

0

使用ROW_NUMBER()分析函数获取每个的最新行ID

SELECT ID,
       PARENT_ID,
       START_TIME
FROM   (
  SELECT p.*,
         ROW_NUMBER() OVER (
           PARTITION BY id
           ORDER BY start_time DESC
         ) AS rn
  FROM   process p
)
WHERE rn = 1
START WITH ID = 'X'
CONNECT BY ID = PRIOR PARENT_ID;
于 2018-05-03T19:52:57.963 回答