我正在研究根据给定一些输入指定的列对表进行排序,根据我的发现,没有简单的方法可以做到这一点。我发现的最好的是 switch 语句:
SELECT Column1, Column2, Column3, Column4
FROM Table
ORDER BY CASE WHEN @OrderBY = 'Column1' THEN Column1
WHEN @OrderBY = 'Column2' THEN Column2
WHEN @OrderBY = 'Column3' THEN Column3
WHEN @OrderBY = 'Column4' THEN Column4
是否可以在没有这样的 CASE
语句的情况下执行此操作?如果表格变得更大并且需要根据更多列进行排序,这可能会变得困惑。
我能够做到这一点的唯一方法是连接一个大的 SQL 字符串,这在某种程度上破坏了存储过程的优势,并使 SQL 难以编写和维护。
最佳答案
你有两个选择:
如上所示
或者生成动态sql并执行 使用
sp_executesql
关于sql-server - 在给定 SQL Server 中的存储过程参数的情况下,是否可以按任何列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169624/