通过 SQL 服务器创建自定义订单

Creating custom order by SQL Server

客户想要按特定顺序显示我的查询返回的值列表。问题是简单地按 asc 或 desc 订购并没有给我客户想要的东西。 DBA 不希望我对值进行硬编码。有没有一种无需硬编码值即可自定义排序的方法?因为这些值每年都会变化,所以每年都必须 maintain/update 它。

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

像这样。

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

您可以在存储过程中使用动态 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)