我正在查询将检索各种个人信息,包括名字和姓氏。我想根据传递的参数@p_Code
更改返回数据的顺序。当@p_Code
为4时,我想按名字和姓氏订购。如果它不是4,那么我想按姓氏排序,然后是名字。
我正在使用MS Sql。
以下是查询:
Select Last,
First,
Phone,
Email
From Master.dbo.Cust
Order by
case @p_Code
when '4' then
([First], [Last])
else
([Last], [First])
end
答案 0 :(得分:2)
这应该这样做:
DECLARE @p_Code VARCHAR(10)
SET @p_Code = '4'
Select [Last],
[First],
Phone,
Email
From Master.dbo.Cust
Order by
case WHEN @p_Code = '4' THEN (RANK() OVER (ORDER BY [First], [Last]))
ELSE (RANK() OVER (ORDER BY [Last],[First] )) END
答案 1 :(得分:0)
我没有方便的测试环境,但是这个怎么样:
Select Last,
First,
Phone,
Email,
(case @p_Code when '4' then [first] else [last] end) as key1,
(case @p_Code when '4' then [last] else [first] end) as key2
From Master.dbo.Cust
Order by key1, key2