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)

有没有办法完成这种排序?

4

1 回答 1

1

如果您ORDER BYGROUP 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)
于 2013-01-19T01:09:20.293 回答