Я пытаюсь выяснить, как лучше в DB2 использовать объединение и «случай, когда» на основе ближайшей отметки времени другой таблицы.У меня есть основной запрос на активность событий:
SELECT eventActivity, eventUser, eventTimestamp
FROM eventActivities
WHERE id = 123;
И второй запрос с соответствующими кодами состояния
SELECT * from eventStatus where event_id = 123;
Первый запрос возвращает
eventActivity | eventUser | eventTimestamp
----------------------------------------------------------------
Status Change John 2019-09-17 00:00:07.541854
Status Change John 2019-09-17 00:00:09.235154
Event Closed John 2019-09-17 00:00:10.000000
2-е возвращение
event_id | event_status | timestamp
--------------------------------------------------------------
123 Progress 2019-09-17 00:00:07.541921
123 Cancelled 2019-09-17 00:00:09.340911
Я хотел бы сделать так, чтобы я мог присоединиться к первому запросу, и только если действие «Изменение состояния», получит event_status с ближайшей отметкой времени, еслиэто имеет смысл.
Таким образом, мой желаемый вывод для вышеупомянутого будет примерно таким:
SELECT eventActivity, eventUser, eventTimestamp, case when eventActivity = 'Status Change' select event_status from eventStatus where event_id = 123 with nearest timestamp
FROM eventActivities
WHERE id = 123;
eventActivity | eventUser | event_timestamp | event_status
--------------------------------------------------------------------------------------
Status Change John 2019-09-17 00:00:07.541854 Progress
Status Change John 2019-09-17 00:00:09.235154 Cancelled
Event Closed John 2019-09-17 00:00:10.000000 null
Есть ли способ, которым я могу вполне реально сделать это в db2?