仅使用oracle中最新的行“以开头/按前面的查询连接”
我的分层查询如下所示:仅使用oracle中最新的行“以开头/按前面的查询连接”,oracle,hierarchical-query,Oracle,Hierarchical Query,我的分层查询如下所示: select ID, PARENT_ID, START_TIME FROM PROCESS START WITH ID='X' CONNECT BY ID=PRIOR PARENT_ID 我的问题是,有些行具有相同的ID“X”,我只希望返回最近的一行(当一个进程被复制时,它的ID是相同的-无法更改)。此外,我只希望它通过最近的行的先前父ID进行连接 从文档中可以看出,我无法在“连接方式”中进行查询以仅获取最新的前一个父id-我是否需要在代码中进行筛选,或者在查询中是否有
select ID, PARENT_ID, START_TIME
FROM PROCESS
START WITH ID='X'
CONNECT BY ID=PRIOR PARENT_ID
我的问题是,有些行具有相同的ID“X”,我只希望返回最近的一行(当一个进程被复制时,它的ID是相同的-无法更改)。此外,我只希望它通过最近的行的先前父ID进行连接
从文档中可以看出,我无法在“连接方式”中进行查询以仅获取最新的前一个父id-我是否需要在代码中进行筛选,或者在查询中是否有这样做的方法?使用行编号()
分析函数获取每个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;
谢谢MT0。这更好,但它只获得最新流程的第一级。如果A是B的父级,B是C的父级,B是重复的,则会显示这些重复项。C的副本不是。似乎connect by ID=Previor PARENT_ID在存在行时总是匹配更多行?编辑您的问题并显示示例数据和预期结果。只有文本数据,没有图像请。