Update-Query

Bernett22

Benutzer
Beiträge
5
Guten Morgen Forum,

ich komme leider nicht mit meiner Update-Abfrage weiter und würde euch gerne um Hilfe bitten. Eine einfache Update-Funktion bekomme ich ja noch hin, wie z.B.

Code:
update dbo.TAB1 SET type = 'EndProduct' where type = 'Verkauf'

Die Logik für mein neues Script wäre folgende:

Ich habe die Tabelle "TAB1" erstellt. In dieser TAB1 befindet sich die Spalte "type" und diese sollte wie folgt aktualisiert werden:

Code:
update dbo.TAB1 SET type = 'EndProduct' where type = 'Verkauf'
update dbo.TAB1 SET type = 'PreProduct' where type = 'Halb'
update dbo.TAB1 SET type = 'Hybrid' where type = 'FF'

update dbo.TAB1 SET type = 'RawMaterial' where type <> 'Verkauf' or type <> 'Halb' or type <> 'FF'

Leider bekomme ich das mit den o.g. Update-Befehlen auf unserem SQL-Server 2016 nicht umgesetzt.
Wie kann ich denn dies passend verschachteln?

Viele Grüße,
 
Werbung:
Hallo
Es ist mit unklar was du mit "bekomme ich nicht umgesetzt" meinst.

Vom Ablauf kann ich mir nicht vorstellen, dass es dein Bestreben ist zuerst von "EndProduct" auf "Verkauf" und dann gleich auf "RawMaterial" umzustellen.
Das passiert aber mit deinem letzten Statement aufgrund der "OR" Verknüpfung.
Ich gehe davon aus, dass du die restlichen auf Zeilen auf Rawmaterial umstellen willst und daher statt des OR ein AND brauchst.
update dbo.TAB1 SET type = 'RawMaterial' where type <> 'Verkauf' AND type <> 'Halb' AND type <> 'FF'
oder ein
update dbo.TAB1 SET type = 'RawMaterial' where type NOT IN ('Verkauf' , 'Halb' ,'FF' )

und davor wirst du ein GO benötigen damit nicht alles im gleichen Aufruf passiert.
 
ich würde zuerst das letzte Update machen, denn wenn die ersten 3 durch sind ist es zu spät. Dazu würde ich es aber in NOT IN ('xx',yy','zz') umschreiben.
 
Hallo zusammen,

vielen Dank für eure Antworten.
Ich habe folgendes ausgeführt und bekomme eine Fehlermeldung:


Code:
update dbo.TAB1 SET type = 'RawMaterial' where type <> 'Verkauf' AND type <> 'Halb' AND type <> 'FF'        

Meldung 8152, Ebene 16, Status 4, Zeile 8
Zeichenfolgen- oder Binärdaten würden abgeschnitten.
Die Anweisung wurde beendet.
 
Hallo zusammen,

vielen Dank für eure Antworten.
Ich habe folgendes ausgeführt und bekomme eine Fehlermeldung:


Code:
update dbo.TAB1 SET type = 'RawMaterial' where type <> 'Verkauf' AND type <> 'Halb' AND type <> 'FF'       

Meldung 8152, Ebene 16, Status 4, Zeile 8
Zeichenfolgen- oder Binärdaten würden abgeschnitten.
Die Anweisung wurde beendet.

sorry, mein Anfängerfehler :)
das Feld 'type' war zu klein erstellt. Jetzt läuft alles.

Vielen Dank für die Hilfe!
 
Du kannst Das übrigens auch mit nur einem UPDATE erreichen:

Code:
update dbo.TAB1 
  SET type = case 
               when type = 'Verkauf' then 'EndProduct'
               when type = 'Halb' then 'PreProduct'
               when type = 'FF' then 'Hybrid'
               else 'RawMaterial'
            end
Eventuell noch mit einer WHERE Bedingung falls type noch andere Werte enthalten kann, die nicht geändert werden sollen.
 
Werbung:
Du kannst Das übrigens auch mit nur einem UPDATE erreichen:

Code:
update dbo.TAB1
  SET type = case
               when type = 'Verkauf' then 'EndProduct'
               when type = 'Halb' then 'PreProduct'
               when type = 'FF' then 'Hybrid'
               else 'RawMaterial'
            end
Eventuell noch mit einer WHERE Bedingung falls type noch andere Werte enthalten kann, die nicht geändert werden sollen.
super! vielen Dank!
 
Zurück
Oben