Guten Tag Forumsgemeinde
Ich stehe vor folgendem Problem:
Wie kann in SQL ich mittels eines Update-Statements der Wert eines Feldes in der Abrage aufnummerieren, beginnend mit einem vorgegebenen Startwert.
Die (beispielhafte) Tabelle sieht so aus:
BestID ArtNr RechNr LieferDatum
1002 45860 70058 27.02.00
1003 31120 70059 29.02.00
1004 68167 01.03.00
...
1026 58996 23.03.00
1027 72156 26.03.00
1028 48902 28.03.00
1029 64537 02.04.00
...
Für Betsllungen die im Monat Februar geliefert wurden, sind schon Rechnungsnummern generiert.
Jetzt sollen die Bestellungen für den Monat März abgerechnet werden, d.h. eine (eindeutige) Rechnungsnummer generiert werden.
Die Abfrage für die zu verändernden Datensätze sieht so aus:
SELECT BestID, ArtNr, RechNr, LieferDatum
FROM tblBestellungen
WHERE RechNr = null AND LieferDatum < 01.04.00 <- Vorausgesetzt, dass ich hier mit richtigen Datumsfeldern arbeite.
Der Startwert für die Aufnummerierung der Rechnungsnummer gewinne ich mit folgendem Statement:
SELECT Max(RechNr) + 1
FROM tblBestellungen
Nun, wie kriege ich die Rechnungsnummer nun mit einem Update-Statement aufnummeriert?
So klappt es auf jeden Fall nicht:
UPDATE tblBestellungen
SET RechNr = ( SELECT Max(RechNr)+1 FROM tblBestellungen )
WHERE RechNr = null AND LieferDatum < 4/1/00
Hat jemand einen Tip oder Ratschlag?
Wichtig ist, dass dieses Aufnummerierung in einer Transaktion erfolgt, damit bei einem Fehlschlag ein vollständiger Rollback vorgenommen werden kann.
Aus diesem Grund scheitert auch das Abarbeiten der Abfrage in einer Schleife, da dort bei einem Fehler nur die Änderung am letzten Datensatz zurückgenommen werden kann, jedoch nicht die komplette Aufnummerierung der Rechnungsnummern.
Danke schon im voraus.
Grüsse
Tom