Как быстро создать строку в день для каждого уникального идентификатора? - PullRequest
1 голос
/ 06 ноября 2019

Я относительно новичок в SQL, пришедшем из SAS. Я чувствую, что есть действительно простое решение для этого ...

У меня есть две таблицы - измерение даты и таблица, которая содержит три столбца - номер клиента, дату и флаг события.

Я хочу создать набор данных, который генерирует полную 365-дневную историю для каждого клиента.

Так, например, в моей таблице событий есть это

CustomerNumber - Date - Event
12345   24/02/2019    1
12345   28/02/2019    1

Я хочу таблицу, которая делает это;

CustomerNumber - Date - Event
12345   24/02/2019   1
12345   25/02/2019   0
12345   26/02/2019   0
12345   27/02/2019   0
12345   28/02/2019   1

Когда я присоединяюсь к измерению даты, я легко могу получить столбец даты и события для правильного отображения, но я получу NULL в поле CustomerNumber, где в таблице событий не было записи,

Мне нужно сохранить номер клиента, чтобы я мог ежедневно получать итоговые 30-дневные промежуточные итоги для каждого уникального клиента.

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете использовать cross join и left join:

select c.customernumber, d.date,
       coalesce(t2.event, 0) as event
from dates d cross join
     (select distinct customernumber from table2) c left join
     table2 t2
     on t2.date = d.date and t2.customernumber = c.customernumber;

Вы можете добавить предложение where для фильтрации по d.date в течение определенного периода времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...