Vertica имеет «Присоединение к серии событий»!
левое, правое или полное внешнее объединение двух таблиц с предикатом значения INTERPOLATE PREVIOUS, которое соединяет текущую строку с непосредственно предшествующей строкой другой таблицы в соответствии со столбцом соединения:
WITH
a(person, dt,Event) AS (
SELECT 'Bob',DATE '2020-01-05','Party'
)
,
b(person,dt,status) AS (
SELECT 'Bob', DATE '2020-01-08','Awake'
UNION ALL SELECT 'Bob', DATE '2020-01-03','Dinner'
UNION ALL SELECT 'Bob', DATE '2020-01-01','Cycling'
)
SELECT
a.person
, a.dt
, a.event
, b.status
FROM a
LEFT OUTER JOIN b
ON a.person = b.person
AND a.dt INTERPOLATE PREVIOUS VALUE b.dt
;
-- out person | dt | event | status
-- out --------+------------+-------+--------
-- out Bob | 2020-01-05 | Party | Dinner