我有一个这样的领域:
- 1月~3月
- 12月~1月</li>
- 3月~12月</li>
- 4月~12月</li>
- 9月~8月</li>
- 6月~7月</li>
我如何对该列进行排序:
- 4月~12月</li>
- 6月~7月</li>
- 9月~8月</li>
- 12月~1月</li>
- 1月~3月
- 3月~12月</li>
它从 4 开始,到 3 结束(4-5-6-7-8-9-10-11-12-1-2-3)(月)
我有一个这样的领域:
我如何对该列进行排序:
它从 4 开始,到 3 结束(4-5-6-7-8-9-10-11-12-1-2-3)(月)
order by case when col < 4 then 1 else 0 end, col
或者如果它真的是一个 varchar
order by case when convert(int,substring(col,1,1)) < 4 then 1 else 0 end, col
这样就可以了,您需要将字段的数字部分分开,并使用以下CASE
语句:
SELECT *
FROM Table1
ORDER BY CASE WHEN CAST(LEFT(Col1, CHARINDEX('月',Col1)-1)AS INT) >= 4 THEN 1 END DESC
,CAST(LEFT(Col1, CHARINDEX('月',Col1)-1)AS INT)
演示:SQL 小提琴
上面的 SQL Server 语法可能因数据库而异。