Oracle查询检索前2个已处理的记录

时间:2017-10-03 16:53:09

标签: sql oracle

Ref    Ref1  Processed     process_date
----------------------------------------------
123    xxxx     Y          23-03-2017 12:10:00
123    zzzz     N          23-03-2017 12:11:10
123    yyyy     Y          23-03-2017 12:11:10
123    wwww     Y          23-03-2017 12:11:11
121    xxxx     Y          23-03-2017 11:10:00
121    yyyy     N          23-03-2017 11:11:00
121    zzzz     Y          23-03-2017 11:11:10
120    xxxx     Y          23-03-2017 11:00:00

如何根据流程日期和Ref检索上述数据中的2条处理过的记录,并且有超过2条记录?

结果应为

123    xxxx  Y  23-03-2017 12:10:00
123    yyyy  Y  23-03-2017 12:11:10
121    xxxx  Y  23-03-2017 11:11:00
121    zzzz  Y  23-03-2017 11:11:10

编辑:

如果有2条或更多条记录具有相同的参考

,我想要2条记录

谢谢!

1 个答案:

答案 0 :(得分:2)

SELECT Ref
    ,Ref1
    ,Processed
    ,process_date
FROM (
    SELECT t.*
        ,row_number() OVER (
            PARTITION BY ref ORDER BY process_date
            ) rn
        ,COUNT(Ref) OVER (PARTITION BY ref) ct
    FROM yourtable t
    WHERE Processed = 'Y'
    )
WHERE rn IN (
        1
        ,2
        )
    AND ct >= 2
ORDER BY REF DESC
    ,process_date;

编辑:添加计数检查以限制记录计数> 2