То, что вы пытаетесь сделать, не работает в SQL Server. Вы не можете использовать псевдоним SELECT
в предложении WHERE
или HAVING
(как вы это делаете).
Такжевнешнее соединение не требуется.Вы можете выразить, что вы хотите, используя apply
:
select c.cust_name, c.location, v.month
from customers1 c join
orders o
on o.cust_id = c.cust_id cross apply
(values (CONVERT(varchar(3), Date1, 100))) v(Month)
where c.LOCATION in ('PUNE', 'KOLKATA') and
v.month = 'Mar';
Я понятия не имею, почему у вас есть group by date1
.date1
нет в списке select
, и у вас нет функций агрегирования, поэтому агрегация кажется ненужной.
Конечно, я бы упростил это до:
select c.cust_name, c.location,
left(datename(month, date1))
from customers1 c join
orders o
on o.cust_id = c.cust_idv(Month)
where c.LOCATION in ('PUNE', 'KOLKATA') and
month(date1) = 3;