我有一个非常大的存储过程,最后生成一个表。我需要通过指定的列和方向动态排序此表。有没有办法做到这一点,而不必将我的SQL放入一个字符串,然后执行字符串? proc已经非常庞大,有大约15个IF语句,所有这些语句都生成相同的表,但根据哪个IF语句被命中,数据不同,总共大约1200行。那里有12列,显然有2个排序方向,所以如果我要在@SortDirection和@SortColumn的每一个前面放置一个IF语句,我会考虑重写程序360 IF语句!
这可以动态完成而不必将其全部放入一个大型复杂的字符串中,然后执行该字符串吗?我使用的是SQL Server 2012。
答案 0 :(得分:1)
12列应该是24个排序表达式:
order by (case when @col = 'column1' and @dir = 'asc' then column1 end) asc,
(case when @col = 'column1' and @dir = 'desc' then column1 end) desc,
. . .
不是微不足道的,但肯定不是360条件表达式: