5 вечера предыдущего дня до 5 вечера сегодня записи записей по сегодняшний день оракула - PullRequest
0 голосов
/ 22 октября 2019

У меня есть требование, при котором я должен определить, является ли запись новой или измененной.

Мы храним как новые, так и измененные записи в одной таблице с самой последней отметкой времени, и пользователи могут обновлять записив любое время, но мы генерируем отчет в 17:00 один раз в день. Если запись создается в течение последних 24 часов (т. Е. С 17:00 предыдущего дня до 17:00 сегодня), поскольку отчет создается в 17:00, мы должны рассматривать эту запись как новую, даже если она много раз изменялась за время окна отчета. Если запись была создана более 24 часов назад и была изменена в течение последних 24 часов, то мы должны рассматривать ее как измененную.

Я написал запрос, но мне нужно сгруппировать его с 5:00 до 17:00. Я не уверен, как это сделать, кто-нибудь, пожалуйста, помогите!

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 голосов
/ 22 октября 2019

Вычтите 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...