Ich habe einen CASE-Ausdruck in einer SQL-Abfrage. Ich möchte eine neue Spalte als Rang basierend auf dem Case-Ausdruck erstellen und nur die Zeile aktualisieren, die das maximale Datum für die Anmeldung hat.So aktualisieren Sie eine Zeile basierend auf einer Bedingung aus einer Groß-/Kleinschreibung
select A.*,
CASE
WHEN A.COUNT = 1
THEN 'rank1'
-- I want to give the condition here saying update the row
-- which has the latest login date with 'rank1' .. now it is
-- updating all the row which has count as 1
else 'rank2' end as Rank
from table A
Wie kann ich eine Bedingung zu dem obigen Code nur hinzufügen, um die Spalte zu aktualisieren, die 1 und aktuelles Login Datum innerhalb der gleichen Anmeldung zu anderen Zeilen verglichen zählen hat?
End Tabelle sollte wie folgt aussehen:
count regID login rank
1 221 10 april 16 rank1
1 221 9 april 16 rank2
1 221 8 april 16 rank2
1 366 8 march 16 rank2
1 366 1 feb 16 rank2
1 366 22 april 16 rank1
, wie mehrere hinzuzufügen, wenn und dann oben Zustand? Danke für diese – rookie
Und Problem mit diesem Code ist es nur die letzte Anmeldung von den gesamten Zeilen als Rang 1 aktualisiert und den Rest ignorieren. Ich möchte den Rang auf regID-Basen aktualisieren. Für Reg-ID 221 wird es einen Rang 1 geben und ähnlich wird für 366 ein anderer Rang 1 da sein. Der obige Code sieht nicht so aus. Bitte helfen Sie – rookie
@rookie. . . Diese Spalte gehört zur 'Partition von'. Ich dachte, die einzige Spalte, die für das Aufteilen der Daten interessant ist, war "count". –