2014-01-09 106 views
0

我試圖轉換此SQL視圖按順序排序月份名稱。 任何幫助,將不勝感激:SQL查詢月份名稱排序

SELECT DATENAME(Month, REQDATE) AS Month, COUNT(WO_NUM) AS Tickets 
FROM  dbo.TASKS 
WHERE  (REQDATE >= '6/1/13') 
GROUP BY DATENAME(Month, REQDATE) 

目前,它顯示了幾個月失靈..

+0

你想讓它們按字母順序排列還是按日曆順序排序?一月,二月,三月等或四月,八月,十二月......? –

回答

0

試試這個。

SELECT MAX(DATENAME(Month, REQDATE)) AS Month, COUNT(WO_NUM) AS Tickets 
FROM  dbo.TASKS 
WHERE  (REQDATE >= '6/1/13') 
GROUP BY DATEPART(Month, REQDATE) 
ORDER BY DATEPART(Month, REQDATE) ASC 

SQL小提琴:http://sqlfiddle.com/#!3/220be/4

+0

這是排序A-Z,我正在拍攝一月,二月,三月.. – user1854651

+0

@ user1854651好的,回答更新。 –

+0

在SQL Server 2008上運行此錯誤時出現錯誤。「列」dbo.TASKS.REQDATE「在ORDER BY子句中無效,因爲它不包含在聚合函數或GROUP BY子句中。」 –

0

的TSQL功能DATEPART()應該讓你每月爲整數。試試這個:

SELECT DATENAME(Month, REQDATE) AS Month, COUNT(WO_NUM) AS Tickets 
FROM  dbo.TASKS 
WHERE  (REQDATE >= '6/1/13') 
ORDER BY DatePart(month, REQDATE) 
GROUP BY DatePart(Month, REQDATE), DateName(Month, REQDATE) 
+0

列「dbo.TASKS.REQDATE」在ORDER BY子句中無效,因爲它不包含在聚合函數或GROUP BY子句中。 – user1854651

+0

好點。我改變了groupby使用DatePart而不是DateName。嗯。也許它應該有兩個。讓我再次改變它。 – tgolisch

4

這將顯示日曆順序中列出的月份的結果。

SELECT DATENAME(Month, REQDATE) AS Month, COUNT(WO_NUM) AS Tickets 
FROM  dbo.TASKS 
WHERE  (REQDATE >= '6/1/13') 
GROUP BY DATENAME(Month, REQDATE), DATEPART(Month, REQDATE) 
ORDER BY DATEPART(Month, REQDATE) ASC 

我加DATEPART(Month, REQDATE)到GROUP BY子句,這不應該影響分組的結果爲DATEPART函數將是每個組中的所有日期相同。

+1

生病了!感謝Adam。 – Kerry7777

0

如果有人仍在尋找答案。訣竅是在日期月份使用AVG。

SELECT DATENAME(Month, REQDATE) AS Month, COUNT(WO_NUM) AS Tickets, AVG(DATEPART(mm, REQDATE)) AS MonthNum 
FROM  dbo.TASKS 
WHERE  (REQDATE >= '6/1/13') 
GROUP BY DATENAME(Month, REQDATE) 
ORDER BY MonthNum ASC