Задать вопрос
@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
  • Вопрос задан
  • 1590 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
LaRN
@LaRN
Senior Developer
У вас в запросе пропущена секция from, т.е. select с полями есть и where с условиями есть, а вот из каких таблиц
это все выбрать нет.

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

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

Похожие вопросы