0

我正在处理一个查询,它将检索各种个人信息,包括名字和姓氏。我想根据传递的参数更改数据返回的顺序,称为@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
4

2 回答 2

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
于 2012-08-27T18:07:21.567 回答
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
于 2012-08-27T18:01:29.880 回答