Beispieltabelle:ORDER BY mit CASE - mehrere Spalten
tableId otherValue
1 4
2 3
3 2
4 1
Ich bin die Daten in einer bestimmten Reihenfolge der Auswahl auf der Grundlage der tableId
- wenn der Wert 1 oder 2 ist es dann zurück, andernfalls andere zurück. Jetzt möchte ich einen zusätzlichen Sortierparameter basierend auf otherValue
hinzufügen.
einfach das Hinzufügen es nach CASE
in ORDER BY
wie unten dargestellt, wird nicht funktionieren, da WITH TIES
verwendet wird.
SELECT TOP 1 WITH TIES tableId, otherValue
FROM exampleTable
ORDER BY (CASE WHEN tableId IN (1, 2) THEN 1 ELSE 2 END), otherValue
Gibt es einen schöneren Weg als eine äußere Abfrage?
Ich glaube nicht. Wenn Sie SQL 2012 und höher verwenden, können Sie IIF() verwenden. es ist ein bisschen sauberer. – FLICKER
um 1 oder 2 bestellen? Das heißt, Sie bestellen bereits entweder mit tableId oder anderenValue –