排序表2列月份和年份

问题描述 投票:0回答:1

我有一个名为MyTable的表,有3列ID、月、年。

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

我使用查询

"Select * from MyTable ORDER BY Years"

OutPut。

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

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

sql ms-access-2007
1个回答
2
投票

试用

Select * from MyTable ORDER BY Years, Months

当你说 ORDER BY A, B顺序为 B 只有在以下情况下才会进行 A 是一样的。请看《ORDER BY几列实例》中的 "ORDER BY几列实例"。https:/www.w3schools.comsqlsql_orderby.asp.

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


1
投票

你的尝试失败了,因为你把月份作为名称存储,所以你不能用它来排序。

你可以将两列的值以如下格式连接起来。'December 1, 2019',然后用 功能 DateValue() 将其转换为 date 数据类型,你可以用它来进行排序。

SELECT * FROM mytable ORDER BY DateValue(Months & ' 1, ' & Years)
© www.soinside.com 2019 - 2024. All rights reserved.