我使用以下查询显示我的数据库有数据的月份列表。
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)
如果我在查询中添加以下排序,则会收到错误,因为它们不会出现在群组中
SORT BY DATENAME(YEAR, EVENT_DATE), DATENAME(MONTH, EVENT_DATE)
有没有办法实现这种目标?
答案 0 :(得分:1)
如果您在ORDER BY
中使用GROUP BY
中的相同内容,那么它将“有效”。
ORDER BY
DATENAME(MONTH, EVENT_DATE) + ' ' + DATENAME(YEAR, EVENT_DATE)
但是你需要向GROUP BY
添加更多信息,以便能够按时间顺序而不是按字母顺序排序(否则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)