我试图通过两个参数来排序我的表格,其中一个是'状态',我有一个完美的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的答案显示了如何正确地做到这一点。 –