winscheil
Goto Top

SQL Update aus derselben Tabelle

Hallo, ich habe folgendes Problem.

Ich habe eine Tabelle die folgendermaßen aufgebaut ist.

Auftrag Rechnung Position Artikel Kosten
NULL 8010445 1 1234 120,00
206404 8010445 2 4567 50,00
206404 8010445 3 8901 300,00
NULL 8009999 1 1234 100,00
206531 8009999 2 7634 20,00
206531 8009999 3 8723 40,00

Es sind Rechnungspositionen, die normal einem Auftrag zugeordnet sind, nur ein Artikel (123) nicht.
Alle Rechnungspositionen der selben Rechnung sind immer dem selben Auftrag zugeordnet.
Bei der Auswertung, z.B. Summenbildung mit Groupierung auf die Aufträge, geht dann dieser Artikel verloren, da hier die Spalte Auftrag nicht gefüllt ist sondern NULL drin steht.

Ich möchte jetzt diese Tabelle updaten und in den Zeilen, bei denen dieser Artikel (123) auftaucht und das Feld Auftrag leer ist, den Eintrag aus dem Feld Auftrag aus einer anderen dazugehörigen Rechnungsposition nehmen und eintragen.

Mit genau einer Rechnung kann ich es:

update TABELLE
set AUFTRAG = (select Top 1 AUFTRAG from ANP_FT_KALK_LIEFRECH_MA where RECHNUNG = '8010445' and AUFTRAG is not null)
where AUFTRAG IS NULL and RECHNUNG = '8010445'


Aber ich schaffe es nicht auf die ganze Tabelle anzuwenden.
Wenn ich die Einschränkung (where) auf genau eine Rechnung entferne steht immer die selbe Auftragsnummer in den gefüllten Feldern.
Kann mir hier jemand helfen?

Content-Key: 334138

Url: https://administrator.de/contentid/334138

Printed on: April 26, 2024 at 04:04 o'clock

Member: Apophis
Apophis Apr 05, 2017 at 09:22:56 (UTC)
Goto Top
Hallo,

versuch's mal mit einem JOIN auf sich selbst:

UPDATE TABELLE AS TAB INNER JOIN TABELLE AS TAB1 ON (TAB.RECHNUNG = TAB1.Rechnung)
SET TAB.Auftrag=Tab1.Auftrag
WHERE IsNull(TAB.Auftrag) AND TAB1.Auftrag IS NOT NULL

Zumindest Access liefert mit Deinen Beispieldaten das Gewünschte.

Gruß
Apophis