结合日期和按日期排序

时间:2018-05-30 10:46:02

标签: sql sql-server date sql-order-by

我有以下查询

SELECT distinct 
COUNT(Status) AS [Transactions], 
left(DATENAME(mm, Date_Reported), 3) AS Month, 
DATENAME(yyyy, Date_Reported) AS Year

FROM [Transactions]

GROUP BY DATENAME(mm, Date_Reported), DATENAME(yyyy,Date_Reported)

ORDER BY Year, Month DESC;

我的输出如下:

Transaction | Month | Year

123         | Jan   | 2000

1234        | Mar   | 2000

12          | Feb   | 2000

如何更改查询以便我可以像“2000年1月”一样获得月份和年份,然后按照2000年1月,2000年2月和2000年3月的日期订购

提前谢谢

1 个答案:

答案 0 :(得分:1)

我想你想要:

SELECT COUNT(Status) AS [Transactions], t1.MonthYear
FROM [Transactions] t
CROSS APPLY ( VALUES (CONCAT(DATENAME(mm, Date_Reported),' ',
                             DATENAME(yyyy, Date_Reported)),
                      DATEPART(mm, Date_Reported)
                     )
            ) t1 (MonthYear, Morder)
GROUP BY t1.MonthYear, t1.Morder
ORDER BY t1.Morder;