排序 Table 2 列月份和年份

Sorting Table 2 columns Month And Year

我有一个 table 名称 MyTable 并且有 3 列 ID、月、年。

ID ¦ Months  ¦Years       
----------------------        
1  ¦ December¦ 2019        
2  ¦ January ¦ 2019        
3  ¦ February¦ 2020        
4  ¦ January ¦ 2020        

我使用了查询

"Select * from MyTable ORDER BY Years"

输出:

ID ¦ Months  ¦Years
----------------------
1  ¦ December¦ 2019
2  ¦ January ¦ 2019
3  ¦ February¦ 2020
4  ¦ January ¦ 2020

然后我尝试查询

"Select * from MyTable ORDER BY  Months, Years"

输出:

ID ¦ Months  ¦Years        
----------------------        
1  ¦ December¦ 2019
3  ¦ February¦ 2020
2  ¦ January ¦ 2019
4  ¦ January ¦ 2020

但我想要这样的输出

ID ¦ Months  ¦Years
----------------------
2  ¦ January ¦ 2019
1  ¦ December¦ 2019
4  ¦ January ¦ 2020
3  ¦ Febuary ¦ 2020

我是这个论坛和编程的新手,如果这个问题重复出现,我很抱歉。我搜索了我的问题,但没有找到确切的解决方案

您尝试失败,因为您将月份存储为名称,因此您不能使用它进行排序。

您可以将两列中的值以 'December 1, 2019' 等格式连接起来,然后使用 function DateValue() 将其转换为 date 数据类型,您可以将其用于排序:

SELECT * FROM mytable ORDER BY DateValue(Months & ' 1, ' & Years)

尝试

Select * from MyTable ORDER BY Years, Months

当您说 ORDER BY A, B 时,按 B 排序只会在 A 相同的情况下进行。请参阅 https://www.w3schools.com/sql/sql_orderby.asp 中的 "ORDER BY Several Columns Example"。

但正如@GMB 在另一个答案中指出的那样,您最好转换为日期并按日期排序。否则对于任何给定的年份,月份将按字母顺序排列,而不是基于实际的日历顺序。