Ich habe einige andere Q & A über Case-Anweisungen innerhalb der WHERE-Klausel gelesen, aber ich kann nicht wirklich verstehen, wie man es verwendet. Ich werde unten einen Ausschnitt des Codes posten. Ich glaube, ich weiß nichts über ein grundlegendes Prinzip, wie man eine Case-Anweisung verwendet, und deshalb wird der Code nicht kompiliert/ausgeführt. Ich schätze jede Hilfe.SQL Case-Anweisung: Inside Where-Klausel
where i.status IN ('CR','L','O')
and i.FGCs > 0
and i.LastShpd > CAST(CONVERT(CHAR(11),DATEADD(DAY,-180,GETDATE()),113) AS datetime)
and (Case
When n.OnOrder IN ('0', '')
Then i.OnOrder = 0 or i.LastShpd < CAST(CONVERT(CHAR(11),DATEADD(DAY,-21,GETDATE()),113) AS datetime)))
End)
Sortieren nach i.LastShpd ab
Um zu erklären, was ich oben, ich habe bereits die entsprechende ‚SELECT‘ und ‚FROM‘ Aussage. Jetzt filtere ich die Ergebnisse basierend auf den angezeigten Variablen (ecx LastShpd). Ich wollte, dass die case-Anweisung Folgendes tut: Wenn n.OnOrder = 0 ist, möchte ich nur die Zeilen behalten, in denen i.OnOrder = 0 ist oder wenn i.LastShpd länger als 21 Tage war.
Sie müssen eine Logik nach dem Ende hinzufügen und (Case Wenn n.OnOrder IN ('0', '') Dann i.OnOrder = 0 oder i.LastShpd
damola