2011-12-27 11 views
2

ケースを使用したい場合Order By節では、複数のカラムで結果セットをソートする必要があります。次の構文を使用すると、構文エラーが発生します。複数の列に基づいて結果セットをソートする「Order by」句の「ケース」を使用する

Select * From MyTable 
    ORDER BY 
    CASE 
     WHEN @ColumnName='NameAndId' THEN Name,Id 
     WHEN @ColumnName='TitleAndId' THEN Title,Id 
    END Desc 

誰でも正しい構文が分かりますか?あなたはcase文のうち、Idを移動できるよう

おかげ

答えて

6

あなたの場合にのみNameTitleの間で切り替わります。

descをどこに適用するか分かりません。これはNameまたはTitleの順に降順になり、ネクタイの場合はIdで昇順になります。

Select * From MyTable 
    ORDER BY 
    CASE 
     WHEN @ColumnName='NameAndId' THEN Name 
     WHEN @ColumnName='TitleAndId' THEN Title 
    END Desc, Id 
+0

@Mikeal:文の決定部分に複数の列を持つ方法はありますか? –

+0

@VahidGhadiri - はい。しかし、注文する必要のある各列に対して 'case'ステートメントを複製する必要があります。 –

+0

@Mikeal:ありがとう –

関連する問題