我有一個三列的表;第一列包含ID,另外兩列包含日期(最多一個爲空,但我認爲這不會影響任何內容)。我怎麼去訂購基於哪個日期更大的ID?我試過由兩個不同的(可能爲空)列的SQL順序
ORDER BY CASE
WHEN date1 > date2 THEN date1
ELSE date2
END
但是這沒有奏效。誰能幫我?另外,我見過其他人發佈的所有類似問題都有它,以便查詢根據第一列排序結果,然後如果第一列爲空(第二列)。我首先必須定義每個空值嗎?我通過一個完整的外連接創建這個表,所以這將是一個完全不同的問題,所以希望可以用空值完成。
你的'CASE'表達式對我來說看起來很好,除了它不支持'date2'爲空的情況;爲了支持這一點,你還想編寫(說)'ORDER BY CASE WHEN date1> date2 OR date2 IS NULL THEN date1 ELSE date2 END'。但是你說它「不起作用」。你可以說得更詳細點嗎?例如,您可以發佈無法正確排序的實際數據嗎? – ruakh 2012-03-12 02:18:15
Gabe,什麼數據庫將運行查詢? – 2012-03-12 02:19:53
對不起,我以爲他們都是一樣的。但我正在使用Oracle。我不知道這對你們來說是否足夠具體。 :S – 2012-03-12 02:26:17