在sql中进行月份排序

时间:2014-04-28 09:55:36

标签: sql sql-server sql-server-2008

在数据库中有一个表格,其中包含

之类的月份
 Month
------------
 MTH_01_2012
 MTH_02_2013
 MTH_03_2013
 MTH_04_2013
 MTH_05_2013
 MTH_01_2014
 MTH_03_2014

如何以降序检索结果?

就像输出一样

Month
-----------
 MTH_03_2014
 MTH_01_2014
 MTH_05_2013
 MTH_04_2013
 MTH_03_2013
 MTH_02_2013
 MTH_01_2012

2 个答案:

答案 0 :(得分:7)

SELECT * 
FROM TABLE_NAME
ORDER BY RIGHT([Month], 4) DESC , SUBSTRING([Month], 5, 2) DESC

答案 1 :(得分:0)

使用PARSENAME内置方法来解析您的查询。 尝试这一个查询而不是右和子串。它不能给你准确的命令

Select *
From MonthMast
Order By 
    PARSENAME(Replace([MONTH],'_','.'), 1) DESC,
    PARSENAME(Replace([MONTH],'_','.'), 2) DESC

输出是:

Month
-------------
MTH_03_2014
MTH_01_2014
MTH_05_2013
MTH_04_2013
MTH_03_2013
MTH_02_2013
MTH_01_2012

检查查询。决定哪个查询最好