我有要求,这是报告。
要求说明:
需要表格处于开放状态超过30分钟的数据
嗯,上述要求可以从
获得select *
from xyz
where status = 'OPEN'
and last_update_date <= sysdate - (30/1440) --30 is minutes and its a parameter
上述查询将从开始到sysdate - (30/1440)获取所有处于OPEN状态的数据。所以我想修改查询以限制完整的数据,添加另一个参数,如DAY
例如,如果我将10作为日期,它应该仅在过去10天和sysdate-30分钟内获取所有数据。 我们应该使用last_update_date列来限制日期。
如果我没有给任何一天作为输入,如果应该从sysdate-30分钟获取所有记录。 如果我不给分钟,它应该以OPEN状态获取所有记录。
问题是否足够明确?我的英语不好。
请建议我查询..
答案 0 :(得分:2)
只需使用OR表达式检查参数是否为NULL:
select *
from xyz
where status = 'OPEN'
and (last_update_date <= sysdate - (:minutes/1440) or :minutes is null)
and (trunc(last_update_date) >= trunc(sysdate - :days) or :days is null)
答案 1 :(得分:1)
此查询未经过测试。 请告诉我这个查询正在返回我错过的任何错误或错误。
select
*
from
xyz
where
status = 'OPEN'
and
last_update_date <= CASE WHEN @No_Of_Days <> 0 THEN sysdate - @No_Of_Days ELSE NULL END
and
minutes(last_update_date) <= SYSDATE - 30/1440