首页 > 解决方案 > 按包含连字符的值对列进行排序,并在连字符后应用排序

问题描述

我有一个类型为 (varchar) 的列,其中包含一个连字符。连字符后的数字代表一年。我需要先按年份排序。

11-18
10-18
11-16
12-17
10-19

应该这样排序:

11-16
12-17
10-18
11-18
10-19

标签: sql-server

解决方案


试试这个

DECLARE @t AS TABLE(CODE VARCHAR(10));
INSERT INTO @T
       SELECT '11-18'
       UNION ALL
       SELECT '10-18'
       UNION ALL
       SELECT '11-16'
       UNION ALL
       SELECT '12-17'
       UNION ALL
       SELECT '10-19';
SELECT *
FROM @t
ORDER BY SUBSTRING(CODE, 4, 2), 
         SUBSTRING(CODE, 1, 2);

推荐阅读