Hilfe zu SQL Case when

NHunt

Neuer Benutzer
Beiträge
4
Hallo zusammen,

ich bin blutiger SQL Anfänger und da ich in der Suche leider nicht fündig geworden bin, versuche ich es nun hier. Auch wenn ich die Befürchtung habe mich lächerlich zu machen. :rolleyes:
Ich würde meine Daten gerne folgendermaßen "manipulieren"
Wenn bei Artikel "1234" die FEM >600.000 ist, soll für Artikel "5678" das Feld BDMT1 auf null gesetzt werden.
Wenn die Bedingungen nicht erfüllt sind, soll der ursprüngliche Wert übernommen werden.

Wie füge ich nun ein, dass das Feld BDMT1 für Artikel "5678" auf null gesetzt werden soll?

Code:
select
T2.TEFIRM, T2.TEWKNR, T2.TETENR,
case when T2.TETENR = '1234' and T2.FEM >600000 then T2.BDMT1*0 else T2.BDMT1 end as BMDT1
from dbo.BLUE

Vielen Dank vorab für eure Unterstützung!
Gruß Hunt
 
Werbung:
Du sprichst von zwei verschiedenen Artikelnummern, also von zwei Datensätzen. Du müsstest erstmal die beiden Datensätze per Join verknüpfen um mit CASE alle Kriterien abfragen zu können.
 
Mahlzeit,

wie ukulele schon richtig geschrieben hat, müsstest du die Tabelle mit sich selber joinen..... Aber mir stellt sich die Frage warum willst du einen anderen Artikel ändern wenn Artikel 1 eine bestimmte Bedingung erfüllt?

Viele Grüße
 
irgendwie so:

Code:
test=*# select * from nhunt ;
 artikel |  fem   | bdmt1
---------+--------+-------
    1234 | 600000 |   100
    5678 | 600000 |   200
(2 Zeilen)

test=*# select *, case when artikel = 5678 then (select case when fem >= 600000 then 0 else bdmt1 end from nhunt where artikel = 1234) else bdmt1 end from nhunt ;
 artikel |  fem   | bdmt1 | bdmt1
---------+--------+-------+-------
    1234 | 600000 |   100 |   100
    5678 | 600000 |   200 |     0
(2 Zeilen)

test=*#

auch wenn das ganze sehr surreal ist ...
 
Ich denke mal die Artikelnummern stehen noch in einem uns unbekannten Zusammenhang, z.B. gekauft durch den selben Kunden oder so. Das wären dann Join-Conditions und das CASE ist dann eigentlich einfach.
 
Werbung:
Vielen Dank für die blitzschnellen Antworten! Die Lösung von akretschmer funktioniert genau so wie ich es mir vorgestellt hatte.
Noch kurz zur Aufklärung. Wir erstellen nach jedem Fertigungsschritt eine neue Artikelnummer.
Z.B. 1112 Tischplatte Roh --> 1113 Tischplatte mit Fase --> 1114 Tischplatte lackiert

Im Beispiel sollte in der Abteilung "Fasen" erst wieder ein Bedarf (BDMT1) erscheinen, wenn die Folgeabteilung "Lackierung" weniger als X offene Aufträge (FEM) hat, da andernfalls das Pufferlager
zu groß wird und Platzprobleme entstehen.

Vielen Dank nochmal!
 
Zurück
Oben