在 MS SQL Server 2005 中,我正在编写一个带有条件排序的查询,我的问题是我不知道如何使用两列进行条件排序?
如果我写这样的代码它可以正常工作
select
*
from
table
order by
case @pkr
when 'kol' then kol
when 'nci' then nci
end
我不知道如何对两列或更多列进行条件排序
select
*
from
table
order by
case @pkr
when 'KOL-NCI' then kol,nci
when 'kol-MPCI' then kol,mpci
end
有一个想法可以制作动态 TSQL 并使用sp_executesql
,但我仍在寻找更好的想法?
我承认我以前从来没有这样做过,所以有点挠头。简单的示例表来演示:
使用@SortStyle 参数来区分排序顺序,@SortStyle =1 将排序
col1 ASC, col2 DESC
,@SortStyle=2 将排序col2 DESC, col1 ASC
。How do you ORDER BY a parameter涵盖了仅按 1 列排序的更简单情况。
假设您有更多案例(我添加了一个),并且所有类型都兼容,
它不是多列排序:您有一个主要排序,然后是次要排序。只需查看 Excel 中的排序对话框即可了解我的意思。
通过您给出的示例,它很简单:
尽可能避免使用动态 SQL 总是好的
有一种更简单的方法,不需要一个过程,或者几个“案例”,只需使用数组
前任:
在 postgresql 中测试