Вот пример того, как сделать то, что вы хотите.
Ключевая часть делает левый присоединиться на вашем столе заказов, а затем просто делать не между date1 и date2
declare @customers table (
id int identity(1,1),
first_name nvarchar(50),
last_name nvarchar(50)
)
declare @orders table (
id int identity(1,1),
customer_id int,
order_date datetime
)
insert into @customers(first_name, last_name) values ('bob', 'gates')
insert into @customers(first_name, last_name) values ('cyril', 'smith')
insert into @customers(first_name, last_name) values ('harry', 'potter')
insert into @orders(customer_id, order_date) values (1, '2007-02-01')
insert into @orders(customer_id, order_date) values (2, '2015-02-15')
insert into @orders(customer_id, order_date) values (3, '2008-02-15')
select
customers.id
,customers.first_name
,customers.last_name
from @customers customers
left join @orders orders on orders.customer_id = customers.id
where orders.id is null
or orders.order_date not between ('2007-01-01') and ('2008-12-31')
group by
customers.id
,customers.first_name
,customers.last_name;
нулевых значений какой колонки? Вам нужен счет? (Список нулей не особенно интересен.) – Mat
Мне нужно первое имя клиентов, у которых нет зарегистрированных заказов между этими датами. Его нулевое значение столбца order_date. –
Если этот столбец имеет значение NULL, он не может находиться между двумя датами. Вы должны основывать свой поиск по другим критериям. – Mat