Как заполнить пропущенные даты по ID в таблице в sql - PullRequest
1 голос
/ 01 мая 2020

У меня есть таблица A с датами и EMPID, например ниже

date          EMPID     
8/06/19        1
8/07/19        1         
8/08/19        1         
8/09/19        1        
8/07/19        2          
8/09/19        2        
8/12/19        2     

У меня также есть таблица B с диапазоном дат

date
...        
8/05/19
8/06/19
8/07/19
8/08/19
8/09/19
8/10/19
8/11/19
8/12/19
8/13/19
...

В моей таблице A отсутствуют даты и EMPID .

Как объединить две таблицы, чтобы получить следующую таблицу.

Date           EMPID
8/05/19        1
8/06/19        1
8/07/19        1
8/08/19        1
8/09/19        1
8/10/19        1
8/11/19        1
8/12/19        1
8/13/19        1
8/05/19        2
8/06/19        2
8/07/19        2
8/08/19        2
8/09/19        2
8/10/19        2
8/11/19        2
8/12/19        2
8/13/19        2

Заранее спасибо. Это используется в наборе данных (SQL) в SSRS. PS Я новичок в кодировании в SQL среде, мой фон в ABAP

1 Ответ

3 голосов
/ 01 мая 2020

Вы можете cross join отличить empid от a с датами от b, как указано ниже:

select b.date, a.empid
from (select distinct empid from a) a
cross join b 

Или, если вы хотите, чтобы insert "отсутствовал" даты в a, тогда вы можете использовать синтаксис insert ... select с условием not exists:

insert into a (date, empid)
select b.date, a.empid
from (select distinct empid from a) a
cross join b 
where not exists (select 1 from a a1 where a1.empid = a.empid and a1.date = b.date)
...