У меня есть набор записей данных о запасах.
У меня также есть набор дат, на которые, хотя у меня могут быть данные, я не могу торговать акциями.
Вот пример DDL для установки:
create table #stock_data
(
symbol varchar (10) NOT NULL,
asof datetime NOT NULL,
price float NOT NULL
)
go
insert into #stock_data values ('IBM', '7/1/09', 100)
insert into #stock_data values ('IBM', '7/2/09', 100)
insert into #stock_data values ('IBM', '7/3/09', 100)
insert into #stock_data values ('IBM', '7/4/09', 100)
insert into #stock_data values ('IBM', '7/5/09', 100)
insert into #stock_data values ('IBM', '7/6/09', 100)
insert into #stock_data values ('IBM', '7/7/09', 100)
insert into #stock_data values ('IBM', '7/8/09', 100)
insert into #stock_data values ('IBM', '7/9/09', 100)
insert into #stock_data values ('MSFT', '7/1/09', 50)
insert into #stock_data values ('MSFT', '7/2/09', 50)
insert into #stock_data values ('MSFT', '7/3/09', 50)
insert into #stock_data values ('MSFT', '7/4/09', 50)
insert into #stock_data values ('MSFT', '7/5/09', 50)
insert into #stock_data values ('MSFT', '7/6/09', 50)
insert into #stock_data values ('MSFT', '7/7/09', 50)
insert into #stock_data values ('MSFT', '7/8/09', 50)
insert into #stock_data values ('MSFT', '7/9/09', 50)
go
create table #exclude_ranges
(
symbol varchar (10) NOT NULL,
asof_start datetime NOT NULL,
asof_end datetime NOT NULL
)
go
insert into #exclude_ranges values ('IBM', '7/2/09', '7/2/09')
insert into #exclude_ranges values ('IBM', '7/6/09', '7/8/09')
insert into #exclude_ranges values ('MSFT', '7/1/09', '7/8/09')
go
А вот ВЫБЕРИ, что я хочу. Я знаю, что должен быть какой-то умный способ сделать это, но я не могу понять это .....
select * from #stock_data
join ????
where ????
чтобы вернуть
('IBM', '7/1/09', 100)
('IBM', '7/3/09', 100)
('IBM', '7/4/09', 100)
('IBM', '7/5/09', 100)
('IBM', '7/9/09', 100)
('MSFT', '7/9/09', 50)
Так какая магия входит в ???? блоки?