Ok, ich habe das auf jeder wo gesucht, aber kann keine Lösung bekommen.Inception mit LAG() in SQL
So habe ich eine Tabelle wie folgt aus:
member_id public_id
a1 NULL
a1 123
a1 345
a2 612
Und ich möchte eine neue Spalte hinzuzufügen, mit dem Namen conv
. Welche mit der Nummer mit dieser Regel gefüllt ist:
IF PREVIOUSROW(member_id) <> member_id THEN 1
ELSE IF PREVIOUSROW(member_id) = member_id AND PREVIOUSROW(public_id) = NULL
THEN PREVIOUSROW(THIS_COLUMN) + 1 <-- here is the inception
ELSE 1
Ich weiß, wie vorherige Zeile zuzugreifen, kann ich LAG()
verwenden. Aber, wie man auf die vorherige Reihe von THAT Spalte zugreift, die auch LAG()
darin benutzt.
Das ist mein Ziel:
member_id public_id conv
a1 NULL 1
a1 NULL 2
a1 NULL 3
a1 123 4
a1 345 1
a2 612 1
Vielen Dank für Ihre Hilfe!
So, nachdem ich Ihre Lösung verwendet, bekam ich so ergeben:
member_id public_id conv
a1 NULL 1
a1 NULL 2
a1 NULL 2
a1 123 2
a1 345 1
a2 612 1
Es ist, weil die Lösung conv+1
und conv
1 ist, so dass die maximale Anzahl wird immer 2
Welche DBMS verwenden Sie? –
@a_horse_with_no_name Impala – mthbnd