Sql server 2008 对分组查询进行排序
我使用以下查询来显示数据库中包含数据的月份列表Sql server 2008 对分组查询进行排序,sql-server-2008,tsql,Sql Server 2008,Tsql,我使用以下查询来显示数据库中包含数据的月份列表 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) 如果我将以下排序添加到查询中,我会得到一个错误,因为它们没有出现在gr
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)
有什么方法可以完成这种排序吗?如果您在排序依据
中使用与在分组依据
中相同的排序方法,它将“起作用”
ORDER BY
DATENAME(MONTH, EVENT_DATE) + ' ' + DATENAME(YEAR, EVENT_DATE)
但是,您需要将更多信息添加到“分组依据”,以便能够按照时间顺序而不是字母顺序进行排序(否则2月在1月之前):
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)