2016-07-21 46 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 Server 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

不知道月份和年份的功能,謝謝! –

相關問題