排序 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 在另一个答案中指出的那样,您最好转换为日期并按日期排序。否则对于任何给定的年份,月份将按字母顺序排列,而不是基于实际的日历顺序。
我有一个 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 在另一个答案中指出的那样,您最好转换为日期并按日期排序。否则对于任何给定的年份,月份将按字母顺序排列,而不是基于实际的日历顺序。