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

CASE 内の異なるタイプによる順序付け

    CASE ステートメントは、1 つのデータ型のみに解決される必要があります。これは、@orderby が 1 つのブランチのみを選択し、それが特定のデータ型になることがわかっているにもかかわらずです。

    このようなものを使用することもできます。これは扱いにくいですが、機能します。

    ORDER BY
    CASE @orderBy WHEN 1 THEN received_date -- Last Rx'd message
    WHEN 2 THEN 0
    WHEN 3 THEN 0
    WHEN 4 THEN 0
    WHEN 5 THEN ime.[allocated_date] -- Allocated Date
    ELSE received_date END,
    CASE @orderBy WHEN 1 THEN 0
    WHEN 2 THEN message_id -- Message Id
    WHEN 3 THEN 0
    WHEN 4 THEN 0
    WHEN 5 THEN 0
    ELSE 0 END,
    CASE @orderBy WHEN 1 THEN ''
    WHEN 2 THEN ''
    WHEN 3 THEN zibmat.short_name -- Message action type
    WHEN 4 THEN error_action.short_name -- Status type
    WHEN 5 THEN ''
    ELSE '' END
    


    1. 高精度のMySQLNOW()関数

    2. postgreSQLのタイムスタンプから分を減算/追加する方法

    3. 参加して複数の条件

    4. SQLiteの日付から日数を引く