m.e*_*son 4 sql t-sql sql-server sql-server-2005
我有一个select语句,结尾如下:
order by case @pcsort
when '' then compcode asc
else received asc, compcode asc
end
Run Code Online (Sandbox Code Playgroud)
基本上我需要它,如果@pcsort
是""然后命令由compcode
由,逾期您的订单received
和compcode
的顺序.
有任何想法吗?
假设数据类型兼容,这将执行您想要的操作
order by
case @pcsort
when '' then compcode
else received
end ASC,
compcode ASC
Run Code Online (Sandbox Code Playgroud)
更一般地说,假设数据类型兼容,则每个排序列需要一个CASE
order by
case @pcsort
when '' then compcode
else received
end ASC,
case @pcsort
--safe to sort on same column agaon , or use a constant
when '' then compcode or <constant of same type as compcode>
else compcode
end ASC
Run Code Online (Sandbox Code Playgroud)
如果数据类型不兼容,则需要更多案例和大量常量
order by
case @pcsort
when '' then compcode
else <constant of same type as compcode>
end ASC,
case @pcsort
when '' then <constant of same type as received>
else received
end ASC,
case @pcsort
when '' then <constant of same type as compcode>
else compcode
end ASC
Run Code Online (Sandbox Code Playgroud)