2016-07-21 2 views
1

Я отношусь к новым функциям SQL и агрегатам.Вывод нескольких агрегатных функций в виде строк вместо столбцов

У меня есть этот запрос, и я просто хочу максимальное значение для каждого месяца.

SELECT max(case when LogDate < '2016-06-01' and LogDate >= '2016-05-01' THEN value end), 
     max(case when LogDate < '2016-07-01' and LogDate >= '2016-06-01' THEN value end), 
     max(case when LogDate < '2016-08-01' and LogDate >= '2016-07-01' THEN value end) 
FROM RawData 

Он работает, однако выход помещается в отдельной колонке для каждого месяца, есть способ, чтобы сделать вывод, как строки в одной и той же колонке вместо этого?

Я использую SQL-сервер 2012

ответ

4

Это очень просто.

«Естественный» выход в строках. Код в вашем вопросе заключается в том, чтобы повернуть его по столбцам.

SELECT YEAR(LogDate) AS Year, 
     MONTH(LogDate) AS Month, 
     MAX(value) AS MaxValue 
FROM RawData 
WHERE LogDate >= '2016-05-01' AND LogDate < '2016-08-01' 
GROUP BY YEAR(LogDate), 
     MONTH(LogDate) 
+0

Не знал о функциях месяца и года, спасибо! –

Смежные вопросы