我有一个数据
Monthyear (varchar) Value
Jan 2019 55
Feb 2019 66
Jan 2020 78
Feb 2020 45
当我选择以上语句作为
select * from datatable order by Monthyear
结果实际上是给我
Monthyear (varchar) Value
Feb 2019 66
Feb 2020 45
Jan 2019 55
Jan 2020 78
但是我想要按月份年份顺序。 我该如何解决?
答案 0 :(得分:3)
您应将“月年”存储为日期(该月的第一个日期)或使用可排序的字符串(“ 2019-01”)。
但是,SQL Server非常擅长将字符串转换为日期,因此您可以使用:
order by convert(date, MonthYear)
这将按您想要的日期进行转换。
实际上,您可能希望将此添加到表中。说:
alter table datatable add yyyymm as (convert(date, MonthYear));
如果表中有很多数据,您甚至可以保留它并添加索引。
答案 1 :(得分:1)
您也可以使用CAST进行此操作。
SELECT *
FROM datatable
ORDER BY Cast(monthyear AS DATE)
结果
+-----------+-------+
| Monthyear | Value |
+-----------+-------+
| Jan 2019 | 55 |
| Feb 2019 | 66 |
| Jan 2020 | 78 |
| Feb 2020 | 45 |
+-----------+-------+