2011-04-11 53 views
2

我需要订购一张由日期约束的表,我不能这样做! :(SQL订单由

我有一个字段(codigo),如果日期的年份(通过参数传递)小于2010年,那么它是这样组成:“FAC-00123-10”,然后我nedd按顺序这个“00123” ......

否则,如果年份代码是在2010年大,领域(Codigo)创建这样的“FT一百二十三分之十一”,然后我需要通过这个“123”

订购

我怎样才能做到这一点?!

回答

3

您可以使用case when语句来决定订购的东西,它使用简单的字符串,但实际上这可能不是足够好,你可以东东d解析你有兴趣在一个更好一点位..

select * from table order by 
    case when DatePart(year,@date) < 2010 then substring(codigo,4,5) 
     else substring(condigo,3,2) end 
+0

刚咬了我一记重拳......我的答案准确... – 2011-04-11 11:56:50

+0

的比较应该是'<= 2010'。 (我知道,OP说:'小于',但样本值意味着它应该'小于或等于'。''then'substring'应该是'substring(codigo,5,5)' ,'else','substring(codigo,7,len(codigo) - 6)'。 – 2011-04-11 14:48:49