我有一个要求,我必须确定记录是新记录还是修改记录。
我们将最新记录和最新记录都存储在同一张表中,用户可以随时更新记录,但是我们每天下午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;
答案 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