Исходя из таблицы:
| ID | Customer | Agent | Event | Date |
|====|==========|==========|===========|============|
| 01 | Steve | Jerry | Booked | 2019-01-01 |
| 02 | Steve | Jerry | Canceled | 2019-01-13 |
| 03 | Steve | Rusty | Booked | 2019-01-16 |
| 04 | Carla | JSnow | Booked | 2019-01-04 |
| 05 | Carla | JSnow | Resched | 2019-01-16 |
У меня есть запрос, который группирует список событий по их владельцам, определяет первую дату бронирования и отмечает агента для первого бронирования:
SELECT
Customer,
FIRST_VALUE(Agent),
MIN(CASE WHEN Event = 'Booked' THEN Date END) as BookDate,
MIN(CASE WHEN Event = 'Canceled' THEN Date END) as CancelDate
FROM Events
GROUP BY Customer
// produces:
| Customer | Agent | BookDate | CancelDate |
|==========|==========|============|============|
| Steve | Jerry | 2019-01-01 | 2019-01-13 |
| Carla | JSnow | 2019-01-04 | NULL |
Я пытаюсь добавить столбец «Агент бронирования после отмены», чтобы он выглядел так:
| Customer | Agent | BookDate | CancelDate | Agent2 |
|==========|==========|============|============|==========|
| Steve | Jerry | 2019-01-01 | 2019-01-13 | Rusty |
| Carla | JSnow | 2019-01-04 | NULL | NULL |
Я не могу понять, как ограничить агрегат для имени агентавключают в себя только те события, в которых дата «Забронировано» больше даты «Отменено» (если она существует).