Найти новые даты для списка сделок - PullRequest
0 голосов
/ 25 апреля 2020

Я хочу найти в календаре даты, которые не включены в таблицу с предложениями + столбцы дат по сделкам. Пример с ожидаемым результатом в коде (T- SQL). Спасибо за советы

create table #deals
(id int ,
dates date);

create table #calendar 
(dates date );

create table #result
(id int ,
dates date);

-----calendar table (tbl#1)
insert into #calendar values ('2020-04-19');
insert into #calendar values ('2020-04-20');
insert into #calendar values ('2020-04-21');
-----deals table (tbl#2)
insert into #deals values ('111', '2020-04-19');
insert into #deals values ('111', '2020-04-20');
insert into #deals values ('222', '2020-04-18');
----expected result table 
insert into #result values ('111', '2020-04-21');
insert into #result values ('222', '2020-04-19');
insert into #result values ('222', '2020-04-20');
insert into #result values ('222', '2020-04-21');

select * from #calendar; 
select * from #deals;
select * from #result

1 Ответ

0 голосов
/ 26 апреля 2020

Создайте все комбинации сделок и дат, а затем удалите существующие:

select d.id, c.date
from (select distinct id from #deals) d cross join
     #calendar c left join
     #deals dd
     on dd.id = d.id and dd.date = c.date
where dd.id is null;
...