Hallo,
ein Artikel hat mehrere verschiedene Gewichtungswerte abhängig vom Typ.
Die Tabellenstruktur sieht wie folgt aus
Artnr | Jahr | Typ | Wert
Der Schlüssel ist Artnr, Jahr, Typ
Ich möchte numerische Werte innerhalb eines Jahres von einem Typ in den Nächsten übertragen mit einer Veränderung (teilweise Addition, teilweise Subtraktion).
Mein erster Versuch des Updates vom Typ 2 in den Typ N sah wie folgt aus:
Dieses Update hat aber nicht immer fuktioniert und ist manchmal in einen FehlerCode:update table as a set a.Wert=( (select b.Wert from table as b where b.Jahr = 2020 and b.Typ = '2' and a.Jahr = b.Jahr and a.Artnr = b.Artnr )+1.8 ) where a.Jahr = 2020 and a.Typ = 'N'
gelaufen.Code:Nullwerte für Spalte oder Variable WERT nicht zulässig.
Nach mehreren Versuchen habe ich nun diesen Update zusammengebaut:
Hier meine Fragen:Code:update table as a set a.Wert=( (select b.Wert from table as b where b.Jahr = 2020 and b.Typ = '2' and a.Jahr = b.Jahr and a.Artnr = b.Artnr )+1.8 ) where a.Jahr = 2020 and a.Typ = 'N' and exists(select b.Wert from table as b where b.Jahr = 2020 and b.Typ = '2' and a.Jahr = b.Jahr and a.Artnr = b.Artnr )
Ist der doppelt verwendete Alias "b" korrekt?
Ist durch die Verknüpfung im Subselect der SET-Klausel nicht gewährleistet, dass a und b eindeutig verbunden sind und daraus folgend Variante 1 ausreichend?
Wenn ich den Subselect alleine ausführe kommen zwar Werte wie 0,00 aber keine NULL Werte. Daraus habe ich geschlossen, dass nur zulässige Werte geschrieben werden. Woher kommen dann die Nullwerte?
Grüße
Marc
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten

Bookmarks