У меня есть две таблицы, CALL_DATA
и MASTER_DATA
.
Основные данные содержат ежедневные данные о клиенте, а CALL_DATA
содержит некоторые звонки клиента и некоторые другие данные.Я хочу получить для каждого клиента и для каждого его ежедневного ряда в MASTER_DATA
строку с самой последней датой (максимальной датой до сих пор) от CALL_DATA
.
Я придумал следующее:
SELECT MAX(CALL_DATA.CALL_DATE) OVER (PARTITION BY MASTER_DATA.CUSTOMER_ID
ORDER BY MASTER_DATA.DAILY_START_DATE)
AS max_date_agg
, MASTER_DATA.*
, CALL_DATA.*
FROM MASTER_DATA, CALL_DATA
WHERE CALL_DATA.CALL_DAT <= MASTER_DATA.DAILY_START_DATE
AND CALL_DATA.CUSTOMER_ID = MASTER_DATA.CUSTOMER_ID;
Но это возвращает мне больше одного живого за каждый день начала.Фактически он возвращает столько строк, сколько есть внутри CALL_DATA
таблицы до DAILY_START_DATE
в MASTER_DATA
.
Пример:
MAX_DATE_AGG CUSTOMER_ID DAILY_START_DATE
24/10/17 00:00:00,000000000 100664970 24/10/17 00:00:00
24/10/17 00:00:00,000000000 100664970 25/10/17 00:00:00
24/10/17 00:00:00,000000000 100664970 26/10/17 00:00:00
24/10/17 00:00:00,000000000 100664970 27/10/17 00:00:00
24/10/17 00:00:00,000000000 100664970 28/10/17 00:00:00
24/10/17 00:00:00,000000000 100664970 29/10/17 00:00:00
24/10/17 00:00:00,000000000 100664970 30/10/17 00:00:00
24/10/17 00:00:00,000000000 100664970 31/10/17 00:00:00
24/10/17 00:00:00,000000000 100664970 01/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 02/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 03/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 04/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 05/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 06/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 07/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 08/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 09/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 10/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 11/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 12/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 13/11/17 00:00:00
24/10/17 00:00:00,000000000 100664970 14/11/17 00:00:00
15/11/17 00:00:00,000000000 100664970 15/11/17 00:00:00
15/11/17 00:00:00,000000000 100664970 15/11/17 00:00:00
15/11/17 00:00:00,000000000 100664970 16/11/17 00:00:00
15/11/17 00:00:00,000000000 100664970 16/11/17 00:00:00
15/11/17 00:00:00,000000000 100664970 17/11/17 00:00:00
15/11/17 00:00:00,000000000 100664970 17/11/17 00:00:00
15/11/17 00:00:00,000000000 100664970 18/11/17 00:00:00
15/11/17 00:00:00,000000000 100664970 18/11/17 00:00:00