2013-07-12 60 views
0

我有一個艱難的查詢做=)SQLSRV:組由一列,合計每月

停止表有以下幾列

Id, Area, SubArea, Date, StopNumber, DownTime 

我想有這樣的結果這:(我會試圖描述..)

Area, SubArea, SUM(StopNumber appened in january) as GEN, 
    SUM(StopNumber appened in february) as FEB, etc.. 
FROM Stops 
GROUP BY Area, SubArea 

任何人都可以幫助我嗎? 謝謝:)

+1

我會考慮改變方法:輸出應該是'Area,SubArea,Month,SUM(StopNumber)',然後你可以按月過濾。 – Eggplant

回答

0

這應該工作:

SELECT Area, SubArea, 
SUM(CASE Month(Date) WHEN 1 THEN 1 ELSE 0 END) AS Jan, 
SUM(CASE Month(Date) WHEN 2 THEN 1 ELSE 0 END) AS Feb, 
SUM(CASE Month(Date) WHEN 3 THEN 1 ELSE 0 END) AS Mar, 
SUM(CASE Month(Date) WHEN 4 THEN 1 ELSE 0 END) AS Apr, 
SUM(CASE Month(Date) WHEN 5 THEN 1 ELSE 0 END) AS May, 
SUM(CASE Month(Date) WHEN 6 THEN 1 ELSE 0 END) AS Jun, 
SUM(CASE Month(Date) WHEN 7 THEN 1 ELSE 0 END) AS Jul, 
SUM(CASE Month(Date) WHEN 8 THEN 1 ELSE 0 END) AS Aug, 
SUM(CASE Month(Date) WHEN 9 THEN 1 ELSE 0 END) AS Sep, 
SUM(CASE Month(Date) WHEN 10 THEN 1 ELSE 0 END) AS Oct, 
SUM(CASE Month(Date) WHEN 11 THEN 1 ELSE 0 END) AS Nov, 
SUM(CASE Month(Date) WHEN 12 THEN 1 ELSE 0 END) AS [Dec] 
FROM Stops 
GROUP BY Area, SubArea 
1

如果你像我建議你在註釋的方法,你可以嘗試這樣的事:

SELECT Area, SubArea, MONTH(Date) AS Month, SUM(StopNumber) AS NumStops 
    FROM Stops 
    GROUP BY Area, SubArea, MONTH(Date)