2013-01-19 64 views
0

我正在使用以下查詢來顯示我的數據庫中有數據的月份列表。對分組查詢排序

SELECT DATENAME(MONTH, EVENT_DATE) + ' ' + DATENAME(YEAR, EVENT_DATE) AS MonthYear 
FROM [ODA].[dbo].[REPORT_CASE_EXT] 
GROUP BY DATENAME(MONTH, EVENT_DATE) + ' ' + DATENAME(YEAR, EVENT_DATE) 

如果我添加以下排序的查詢,我是因爲他們沒有在GROUPBY

SORT BY DATENAME(YEAR, EVENT_DATE), DATENAME(MONTH, EVENT_DATE) 

出現得到一個錯誤,有沒有辦法做到這一點排序?

回答

1

如果您在ORDER BY中使用GROUP BY中的值,它將「有效」。

ORDER BY 
    DATENAME(MONTH, EVENT_DATE) + ' ' + DATENAME(YEAR, EVENT_DATE) 

但是,你需要更多的信息添加到GROUP BY能在時間順序而非字母順序訂購(否則二月一月前):

GROUP BY 
    datename(YEAR, EVENT_DATE), 
    datename(MONTH, EVENT_DATE), 
    datepart(YEAR, EVENT_DATE), 
    datepart(MONTH, EVENT_DATE) 
ORDER BY 
    datepart(YEAR, EVENT_DATE), 
    datepart(MONTH, EVENT_DATE) 
+0

完美。謝謝。 – scholzr