SQL mehrere Werte mit einer Anweisung ändern?
Guten Tag,
Folgende Aufgabe:
Jenachdem ob der MwStSatz eines Produktes 7% beträgt, soll ein Feld (Artikel_Markierung) den Wert 1 bekommen, wenn er nicht 7% beträgt eine 0.
Mein Problem: beim Update Befehl darf nur einmal die WHERE Klausel verwendet werden. Wie kann ich es dennoch in nur einer Anweisung machen?
Mein Ansatz:
UPDATE Artikel
SET Artikel_Markierung=1
WHERE Art_MwStSatz=7
AND SET Artikel_Markierung=0
WHERE Art_MwStSat!=7
Aber ich glaube das führt zu einem Fehler.
Jemand eine Idee?
VG
Abstimmung war aus Versehen, dachte sind die Tags :D
Würde folgendes funktionieren?
UPDATE Artikel
SET Art_Markierung= CASE WHEN Art_MwStSatz = 7 THEN '1'
WHEN Art_MwStSatz <> 7 THEN '0'
END
4 Stimmen
1 Antwort
Dafür kannst du ein CASE-Statement benutzen, sprich etwas ala:
UPDATE Artikel
SET Artikel_Markierung = CASE Art_MwStSatz
WHEN 7 THEN 1
ELSE 0
END
WHERE Artikel_Markierung != CASE Art_MwStSatz
WHEN 7 THEN 1
ELSE 0
END
Das WHERE kannst du natürlich auch weglassen, dann würdest du aber natürlich alle Zeilen updaten, auch die, die schon den richtigen Wert haben.