1

ORDER BY条件「order by」に条件を追加する方法を読みましたか? しかし、これらは私の問題には答えません。

と という 2 つの日時列がCREATION_DATEありUPDATE_DATEます。

ORDER BY私は(句を使用して)ソートしたい:

  • CREATION_DATEもしもCREATION_DATE = UPDATE_DATE

    また

  • UPDATE_DATE他の場合。

私が書いた

SELECT * FROM Table1
ORDER BY
CASE Table1.CREATION_DATE
    WHEN Table1.CREATION_DATE = Table1.UPDATE_DATE THEN Table1.CREATION_DATE
    ELSE Table1.UPDATE_DATE
END ASC

=シンボルでエラーが発生します。

私は他の演算子を試してみました... もちろん、私は間違いを犯しますが、WHENステートメントで演算子を使用することが正しいかどうかはわかりません。

で受け入れられない演算子はありWHENますか?

ありがとうございました

4

4 に答える 4

6

試す

ORDER BY
CASE WHEN Table1.CREATION_DATE = Table1.UPDATE_DATE
     THEN Table1.CREATION_DATE
     ELSE Table1.UPDATE_DATE
END ASC

またはより簡単

ORDER BY Table1.UPDATE_DATE ASC

UPDATE_DATEに等しい場合にのみ並べ替えたいためですCREATION_DATE。その場合でもご注文UPDATE_DATEいただけます。それ以外の場合は でご注文くださいUPDATE_DATE。それだけで注文してください。同じです。

于 2012-08-17T08:31:59.230 に答える
0

C++ / java / C# の「アナロジー」では、SQLステートメントを、および構造のCase両方として使用できます。switch()if / elseif / if

たとえば、次の両方が有効です。

declare @flag bit
set @flag = 0
select case 
    when @flag = 1
        then '1 selected'
    else
        '0 selected'
    end

declare @flag bit
set @flag = 0
select case @flag
    when 1
        then '1 selected'
    else
        '0 selected'
    end
于 2012-08-17T08:38:09.047 に答える
0

試す

ORDER BY UPDATE_DATE, CREATION_DATE
于 2012-08-17T08:32:04.313 に答える
0
SELECT * FROM Table1
ORDER BY
CASE 
    WHEN Table1.CREATION_DATE = Table1.UPDATE_DATE THEN Table1.CREATION_DATE
    ELSE Table1.UPDATE_DATE
END ASC
于 2012-08-17T08:32:22.753 に答える