Hallo Zusammen,
oaagnr kann unterschiedlich sein. In diesem aktuellen Beispiel ist es zwar identisch, aber bei nachfolgenden Prozessen ist das nicht sichergestellt. Daher muss ich es als zusätzlichen Parameter verwenden. Und auch waaupo ist zwar meistens 0 aber nicht immer...
Und wenn es unterschiedlich ist, kenne ich nicht die Syntax, es anders unterzubringen...
Gruß
Patrick
Naja, aber Du mußt sicherstellen, dass die WHERE-Klausel wirklich
nur die Zeilen findet, die Du updaten willst, sonst hast Du halt das Problem, dass für manche der gefundenen Zeilen keine der When-Klauseln passt und dann halt NULL in die Spalte geschrieben wird.
Mmh, doch, Du könntest für jedes Case eine ELSE-Klausel verwenden, die einfach den aktuellen Wert der Spalte in diese schreibt.
Code:
update as400 set
sequence = case
when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then 1
when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then 2
when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then 3
else sequence
end,
frozen = case
when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then 1
when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then 1
when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then 0
else frozen
end,
plan_date = case
when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then '2019-07-05'
when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then '2019-07-05'
when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then '2019-07-06'
else plan_date
end
where concat(waaunr,'-',waaupo,'-',oaagnr) in ('408216-0-10', '408217-0-10', '408218-0-10')
Probier mal aus, ob die Datenbank-Engine sowas akzeptiert.