繁体   English   中英

仅使用oracle中的最新行以先前查询开头/连接

[英]Use only the most recent row in oracle start with/connect by prior query

我的分层查询如下所示:

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-我是否需要过滤代码,或者是否可以在查询中执行此操作?

使用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM