2013-01-19 65 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