通过 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)
客户想要按特定顺序显示我的查询返回的值列表。问题是简单地按 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)