Я работаю над запросом, где я хочу получить среднюю температуру за целый месяц, но у меня есть проблема.Когда начинается новый год, Месяц равен 1, и я не могу использовать команду:
MONTH(TimestampUTC) = MONTH(DATEADD(MONTH, -1, GETDATE()))
Поскольку месяц 1 минус 1 - это месяц 0.
Поэтому я не хочу использоватьВыражение case, чтобы заставить мой код работать.
Когда я запускаю запрос ниже, я получаю следующую ошибку:
Сообщение 156, Уровень 15, Состояние 1, Строка 6
Неверный синтаксис рядом с ключевым словом «CASE».
Конечно, я хочу, чтобы следующий запрос работал.Кто-нибудь может мне помочь?
SELECT AVG(Value) AS AVG_temp
FROM(
SELECT Value, TimestampUTC
WHERE SourceName = 'Buitentemperatuur'
CASE
WHEN MONTH(TimestampUTC) = 1
THEN MONTH(TimestampUTC) = MONTH(DATEADD(MONTH, +11, GETDATE()))
and YEAR(TimestampUTC) = YEAR(DATEADD(YEAR, -1, GETDATE()))
ELSE
MONTH(TimestampUTC) = MONTH(DATEADD(MONTH, -1, GETDATE()))
and YEAR(TimestampUTC) = YEAR(DATEADD(YEAR, 0, GETDATE()))
END
FROM vDataLogChannelValue
) x
Программа, в которой я работаю, - Microsoft SQL Server Management Studio 2014. Я уже провел несколько тестов UNIT для других частей кода.Когда я добавляю CASE, ошибка становится активной, и код больше не работает.
ОБНОВЛЕНИЕ:
Спасибо за отзыв, он работает сейчас, но теперь у меня есть следующее предупреждение, которое не имеет смысла для меня, потому что оно работало, когда я проверял его, когда это не былоt в этом запросе:
Msg 102, уровень 15, состояние 1, строка 8
Неверный синтаксис рядом с '='.
Это примерноследующая строка:
THEN MONTH(TimestampUTC) = MONTH(DATEADD(MONTH, +11, GETDATE()))