通过SQL Server创建自定义顺序

时间:2015-01-21 16:02:39

标签: sql-server sorting sql-order-by

客户希望按特定顺序显示我的查询返回的值列表。问题是简单地通过asc或desc订购并不能满足客户的需求。 DBA不希望我硬编码值。有没有办法在没有硬编码值的情况下进行自定义排序?因为这些价值每年都会发生变化,每年都要维持/更新。

Table Structure:
Column:  CMN_CodesID (unique), Name (is what I'd like to display in custom order)

2 个答案:

答案 0 :(得分:1)

像这样的东西。

order by case when Jack then 1 
          when Apple then 2 
          when Orange then 3 
          ...
         End

答案 1 :(得分:1)

您可以在存储过程中使用动态sql并将@MyOrderBy作为参数传递给它(添加到此示例中以进行说明)。

DECLARE @MyOrderBy VARCHAR(300)
SELECT @MyOrderBy = 'case when myfield = ''Jack'' then 1  when myfield = ''Apple'' then 2  when myfield = ''Orange'' then 3 else 4 End'


DECLARE @sSQL VARCHAR(300)

SELECT @sSQL = 'SELECT * FROM mytable ORDER BY ' + @MyOrderBy


EXEC(@sSQL)