Setzen Sie den Rang auf NULL mit RANK () OVER in SQL

8

In einer SQL Server-Datenbank habe ich eine Tabelle mit Werten, die mich interessieren.

Wenn ich RANK () OVER (ORDER BY VALUE DESC) als RANK führe, erhalte ich folgende Ergebnisse (in einer hypothetischen Tabelle):

%Vor%

Das Problem ist, ich möchte nicht, dass die Zeilen, die NULL für einen VALUE haben, einen Rang bekommen - ich brauche eine Möglichkeit, den Rang für diese auf NULL zu setzen. Bis jetzt hat die Suche im Internet keine Antworten darauf ergeben, wie ich dazu in der Lage sein könnte.

Vielen Dank für Ihre Hilfe.

    
Tom Schneider 09.09.2010, 13:18
quelle

2 Antworten

8

Sie können eine CASE-Anweisung versuchen:

%Vor%     
Mark Byers 09.09.2010, 13:20
quelle
2

Die früher bereitgestellte CASE-Anweisung würde die NULL-Datensätze im Rang zählen, wenn SORT BY aufsteigend statt absteigend wäre. Dies würde die Rangfolge bei 5 statt 1 beginnen - wahrscheinlich nicht was gewünscht ist.

Um sicherzustellen, dass die Nullen nicht im Rang gezählt werden, können Sie sie nach unten zwingen, indem Sie ein Anfangssortierkriterium hinzufügen, ob der Wert NULL ist oder nicht, etwa so:

%Vor%

*** Kredit an Hugo Kornelis: Ссылка

    
Nathaniel Ramm 31.10.2014 05:33
quelle

Tags und Links