我有一个这样的字段:
如何对以下列进行排序:
从4开始到3结束(4-5-6-7-8-9-10-11-12-1-2-3)(月)
答案 0 :(得分:0)
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
答案 1 :(得分:0)
这样做,您需要将字段的数字部分分开,并使用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 Fiddle
上面的SQL Server语法可能因数据库而异。