【发布时间】:2015-11-10 16:59:40
【问题描述】:
我正在尝试按两个参数对我的表进行排序,一个是“状态”,其中我有一个完美工作的 CASE 订单,第二列是“ID”,我只想通过他们的表 ID 对案例的结果进行排序为了在排序的情况下将最新的结果放在最前面。
这是我目前的查询:
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 添加到该排序中
我当前的输出如下所示:
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
所以状态的顺序是错误的:/
应该是:
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
【问题讨论】:
-
查看编辑后的答案。如果仍然不满意,请解释您的订购有什么问题...
-
应该解释每一个反对意见。我提供了一个关于我当前结果的详细问题..
-
我不反对。只是备注:查询和输出不匹配。 'KEIN_INTERESSE' 会排在最后,因为它会得到一个 NULL 的隐式排序键。我想你仍然有
ELSE status,它会让你首先得到'KEIN_INTERESSE',因为Oracle 处理'1'>'K'。 (并且状态 '1 x ABGELEHNT' 将介于 '1' 和 '2' 之间。为某些状态创建排序键并将状态本身用作其他状态的排序键是一个坏主意 :-) 这只是为了解释发生了什么。 Giorgi Nakeuri 的回答中显示了如何正确地做到这一点。 -
@noa-dev,没关系。总有人无缘无故地投反对票。我记得我遇到了问题并提出了问题。并获得了 2 次反对票 :) stackoverflow.com/questions/27900996/ssrs-report-parameter 但一般来说,当您被反对票时,您应该重新阅读您的问题。可能有一些你可以改进的地方。
标签: sql sql-server