【问题标题】:select the latest row based on sysdate and/or other conditions根据 sysdate 和/或其他条件选择最新行
【发布时间】:2021-03-31 09:27:28
【问题描述】:

我试图从表中查找最新行,但该行必须包含状态 = 'FAILED' 或(end_time sysdate 或 end_time sysdate-1)的条件。如果满足任何一个条件,我希望它不返回任何行,但是当两个条件都不满足时,它会向我显示表的最新行。

以下是我正在处理的查询,任何人都可以判断它是对还是错,我将如何处理?

 select session_key, start_time, end_time, status
 from v$rman_backup_job_details
 where end_time = (select max(end_time) from v$rman_backup_job_details
                   where status = 'FAILED' or end_time <> sysdate or end_time <> sysdate-1);

【问题讨论】:

    标签: sql database oracle


    【解决方案1】:

    我认为您需要创建这样的查询:

    select 
        session_key, 
        start_time, 
        end_time, 
        status 
    from 
        v$rman_backup_job_details
    where 
        end_time = (
                select max(end_time) from v$rman_backup_job_details
                     where status = 'FAILED' AND (end_time <> sysdate or end_time <> sysdate-1)
        ) WHERE ROWNUM = 1;
    

    只返回最后一个结果。我把 AND 因为你的条款需要 FAILED 状态。

    【讨论】:

    • 我的问题是我没有正确表达问题,它应该根据 status='FAILED' 或 end_time sysdate/sysdate-1 返回最新的行。我已经更新了问题。
    • 在快速检查中,我认为您的查询是正确的。我只是把 where ROWNUM = 1 只返回第一条记录(如果你有 2 条或更多条相同的日期)
    猜你喜欢
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多