我試圖通過兩個參數來排序我的表格,其中一個是'狀態',我有一個完美的CASE命令,第二列是'ID',我只是想訂購這些案例的結果通過他們的表ID來使最新的結果在排序後的案例中處於最高位置。SQL ORDER BY CASE + ORDER BY ID DESC
那是我當前的查詢:
SELECT ID, status
FROM omv_tabelle
ORDER BY CASE
WHEN status = 'ANMELDUNG' THEN '1'
WHEN status = 'KUNDE' THEN '2'
WHEN status = 'OMV_ANTRAG' THEN '3'
WHEN status = 'ABLEHNUNG' THEN '4' END ASC,
ID DESC
我不知道如何添加ID成排序,同時不破壞的情況下funktionality
我的電流輸出是這樣的:
407 KEIN_INTERESSE
406 KEIN_INTERESSE
405 KEIN_INTERESSE
397 KEIN_INTERESSE
396 KEIN_INTERESSE
411 ANMELDUNG
1 ANMELDUNG
6 KUNDE
5 KUNDE
4 KUNDE
3 KUNDE
2 KUNDE
394 ABLEHNUNG
393 ABLEHNUNG
392 ABLEHNUNG
391 ABLEHNUNG
390 ABLEHNUNG
所以狀態的排序是錯誤的:/
它肩d是:
411 ANMELDUNG
1 ANMELDUNG
6 KUNDE
5 KUNDE
4 KUNDE
3 KUNDE
2 KUNDE
394 ABLEHNUNG
393 ABLEHNUNG
392 ABLEHNUNG
391 ABLEHNUNG
390 ABLEHNUNG
407 KEIN_INTERESSE
406 KEIN_INTERESSE
405 KEIN_INTERESSE
397 KEIN_INTERESSE
396 KEIN_INTERESSE
見編輯答案。如果它仍然不能滿足你,然後解釋你的訂單有什麼問題... –
應該解釋每一個downvote。我提供了一個詳細的問題與我目前的結果.. –
沒有downvote從我。只是一句話:查詢和輸出不匹配。 'KEIN_INTERESSE'會最後一個,因爲它會得到一個NULL的隱式排序鍵。我想你還是有'ELSE status',這會讓你'KEIN_INTERESSE'第一次,因爲Oracle會處理'1'>'K'。 ('1 x ABGELEHNT'的狀態會介於'1'和'2'之間爲某些狀態創建排序鍵並將狀態本身用作其他排序鍵的排序鍵是一個壞主意:-)這只是爲了exlain發生了什麼事。 Giorgi Nakeuri的答案顯示瞭如何正確地做到這一點。 –