客户希望按特定顺序显示我的查询返回的值列表。问题是简单地通过asc或desc订购并不能满足客户的需求。 DBA不希望我硬编码值。有没有办法在没有硬编码值的情况下进行自定义排序?因为这些价值每年都会发生变化,每年都要维持/更新。
Table Structure:
Column: CMN_CodesID (unique), Name (is what I'd like to display in custom order)
答案 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)