0

私は、名前や名前など、さまざまな個人情報を取得するクエリを実行しています。渡されたパラメータに基づいて、データが返される順序を変更したいと思います@p_Code。が4の場合@p_Code、名前、名前の順に並べます。4でない場合は、姓、名の順に並べます。

私はMSSQLを使用しています。

現状のクエリは次のとおりです。

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 に答える