我正在尝试从一个日期列中按年和月订购,该列具有YYYY-MM-DD。
下面是我的代码示例:
SELECT * FROM (
SELECT CONCAT(YEAR([DATE]), '-', MONTH([DATE])) AS 'YM' FROM randomTable WHERE [DATE] IS NOT NULL
)sub1
GROUP BY sub1.YM
ORDER BY SUB1.YM asc这不是很有效,但已经很接近了,我正在
2017-11 2018-10 2018-11 2018-12 2018-3 2018-4 2018-5 2018-6 2018-8 2018-9 2019-1 2019-10 2019-11 2019-2 2019-3 2019-4 2019-5 2019-6 2019-7 2019-8 2019-9
问题出在2019-10 2019-11和2018-10 2018-11 2018-12。我如何才能让它正常工作,这样才能正确地排序?
发布于 2019-11-15 02:52:46
保留[DATE]并将其用于排序如何?
SELECT sub1.YM
FROM (SELECT CONCAT(YEAR([DATE]), '-', MONTH([DATE])) AS YM, [DATE]
FROM randomTable
WHERE [DATE] IS NOT NULL
) sub1
GROUP BY sub1.YM
ORDER BY MIN([DATE]);发布于 2019-11-15 02:58:51
这是因为YM是文本,按字母顺序“2019-10”在“2019-2”之前。
但这很容易解决。
SELECT sub1.YM
FROM (
SELECT FORMAT([DATE],'yyyy-MM') AS [YM]
FROM randomTable
WHERE [DATE] IS NOT NULL
) sub1
GROUP BY sub1.YM
ORDER BY sub1.YM asc然后“2019-10”在“2019-02”之后。
顺便说一句,这个查询可以缩短。
SELECT FORMAT([DATE],'yyyy-MM') AS [YM]
FROM randomTable
WHERE [DATE] IS NOT NULL
GROUP BY FORMAT([DATE],'yyyy-MM')
ORDER BY [YM]发布于 2019-11-15 03:41:57
以下是您要查找的内容:
SELECT distinct CAST( YEAR([DATE]) AS varchar) + '-' + CAST( month([DATE]) AS
varchar) AS 'YM', year([DATE])as 'Y',MONTH([DATE]) as 'M'
FROM randomTable WHERE [DATE] IS NOT NULL order by Y,Mhttps://stackoverflow.com/questions/58863896
复制相似问题