前一天的5pm到今天的5pm记录了截至今天的oracle

时间:2019-10-22 19:35:53

标签: sql oracle

我有一个要求,我必须确定记录是新记录还是修改记录。

我们将最新记录和最新记录都存储在同一张表中,用户可以随时更新记录,但是我们每天下午5点生成报告。如果在过去24小时(即前一天的下午5点到今天的下午5点)内创建了记录,则由于报表是在下午5点生成的,因此我们必须将该记录视为新记录,即使在报告窗口时间内已对其进行了多次修改。如果记录是在24小时前创建的,并且在过去24小时内被修改,则我们必须将其视为已修改。

我已经写了查询,但是我需要将它从上午5点到下午5点进行分组,我不确定该怎么做,请任何人帮助!

select emp_id,
       case 
       when count(emp_id) <=1
       then 'New'
       else 'Modified'
       END as status
from   (
  select emp_id,
         emp_status,
         trunc(last_updated) as last_updated
  from employee
) 
group by emp_id,
         emp_status,
         trunc(last_updated)
order by last_updated)
group by emp_id
order by emp_id;

1 个答案:

答案 0 :(得分:0)

从截断前的时间中减去17小时,然后将其分组:

select emp_id,
       case 
       when count(emp_id) <=1
       then 'New'
       else 'Modified'
       END as status
from   (
  select emp_id,
         emp_status,
         trunc(last_updated - INTERVAL '17' HOUR) as last_updated
  from employee
) 
group by emp_id,
         emp_status,
         last_updated
order by last_updated