sql >> データベース >  >> RDS >> Sqlserver

ORDERBY句のCASEWHENステートメント

    CASE です -シングルを返します スカラー値(行ごと)。 ORDER BYのように、他の何かの解析ツリーの複雑な部分を返すことはできません。 SELECTの句 ステートメント。

    必要なのは次のようです:

    ORDER BY 
    CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount END desc,
    CASE WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount END desc, 
    Case WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount END DESC,
    CASE WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount END DESC,
    Case WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount END DESC,
    TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC
    

    またはおそらく:

    ORDER BY 
    CASE
       WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount
       WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount
       WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount
       WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount
       WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount
    END desc,
    TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC
    

    上記(または他の何か)のどれがあなたが探しているものであるかを判断するのは少し難しいです。なぜなら、あなたはa)説明されていない 達成しようとしている実際の並べ替え順序、およびb)サンプルデータが提供されていない 期待される結果から、推定を試みることができます 達成しようとしている実際の並べ替え順序。

    これが私たちが探している答えかもしれません:

    ORDER BY 
    CASE
       WHEN TblList.PinRequestCount <> 0 THEN 5
       WHEN TblList.HighCallAlertCount <> 0 THEN 4
       WHEN TblList.HighAlertCount <> 0 THEN 3
       WHEN TblList.MediumCallAlertCount <> 0 THEN 2
       WHEN TblList.MediumAlertCount <> 0 THEN 1
    END desc,
    CASE
       WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount
       WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount
       WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount
       WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount
       WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount
    END desc,
    TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC
    


    1. Oracleでネストされたトランザクションを使用する

    2. SQLでテーブルを削除する方法

    3. PostgreSQLの日付から曜日名を取得する

    4. 2つのクエリの結果を1つのデータセットに結合する方法