@WebAnalytics1

Как правильно написать SQL запрос с использованием переменной?

Задача: разделить данные за сегодня и вчера по столбцам. Если использовать этот запрос без переменных то все работает. Анализ синтаксиса в excel пишет "необходимо объявить скалярную переменную @today" хотя я вроде его объявил в начале Используется MSSQL 2016

DECLARE @today as Date, @yesterday as Date;
Set @today = convert(date, getdate());
Set @yesterday = convert(date, dateadd(day, -1, getdate()));
SELECT n.Name, o.Created,
Count(DISTINCT(CASE WHEN Status =  'N' And  o.Date = @today Then ID END))  as NewQ,
Count(DISTINCT(CASE WHEN Status =  'N' And  o.Date = @yesterday Then ID END))  as YdNewQ,
Count(DISTINCT(CASE WHEN Status =  'W' And  o.Date = @today Then ID END)) as WaitingQ,
Count(DISTINCT(CASE WHEN Status =  'W' And  o.Date = @yesterday Then ID END)) as YDWaitingQ,
Count(DISTINCT(CASE WHEN Status =  'U' And  o.Date = @today Then ID END))  as ProblemQ,
Count(DISTINCT(CASE WHEN Status =  'U' And  o.Date = @yesterday Then ID END))  as YdProblemQ,
Count(DISTINCT(CASE WHEN Status =  'Z' And  o.Date = @today Then ID END))  as CancelledQ,
Count(DISTINCT(CASE WHEN Status =  'Z' And  o.Date = @yesterday Then ID END))  as YdCancelledQ

FROM Orders i 
LEFT JOIN OrderItems o ON o.OrderID = i.ID
LEFT JOIN NomenclUS m ON m.ID = o.ProductID

WHERE i.Status <> 'Z' AND o.Created >= dateadd(day, -2, getdate())

GROUP BY o.Created, n.CatID, n.CatName
ORDER BY o.Created, n.CatID
  • Вопрос задан
  • 1245 просмотров
Решения вопроса 1
LaRN
@LaRN
Senior Developer
У вас в запросе пропущена секция from, т.е. select с полями есть и where с условиями есть, а вот из каких таблиц
это все выбрать нет.

Переменные у вас объявлены правильно и если выполнить первые три строки запроса, то ошибок не будет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
02 мая 2024, в 14:44
500 руб./за проект
02 мая 2024, в 14:36
3000 руб./за проект
02 мая 2024, в 14:29
30000 руб./за проект