Eine Darstellung der Abfrage, mit der ich arbeite, lautet wie folgt.So verschachteln Sie eine CASE-Anweisung in einer WHERE-Klausel und geben mehrere Werte zurück
SELECT T1.Col3
FROM Table1 T1
WHERE T1.Col1 IN ('Value1','Value2')
AND (CASE
WHEN T1.Col1 = 'Value1'
THEN T1.Col2 IN ('Value3','Value4','Value5')
WHEN T1.Col1 = 'Value2'
THEN T1.Col2 IN ('Value6','Value7','Value8')
END
)
Ich bekomme immer einen Fehler mit der Syntax um die Sekunde wenn aus irgendeinem Grund. Ich bekomme auch einen Syntaxfehler am ersten Komma in beiden IN-Anweisungen, aber nicht die zweite. Nicht, dass es ein macht einen Unterschied machen sollte, ich habe auch versucht, die verschachtelten IN-Anweisung zu einer OR-Anweisung wie folgt Wechsel:
THEN (T1.COL2 = 'Value3') OR (T1.COL2 = 'Value4') OR (T1.COL2 = 'Value5')
Stattdessen bekomme ich einen Syntaxfehler um die erste OR-Anweisung.
Ich habe CASE in einer WHERE-Klausel verwendet, aber es gab nur einen Wert zurück. Die Tatsache, dass ich bei der ersten Komma- oder ODER-Anweisung einen Syntaxfehler erhalte, lässt mich vermuten, dass die Rückgabe mehrerer Werte nicht möglich ist.
Jedes Licht, das Sie auf dieses Problem werfen könnten, wird sehr geschätzt.
P.S. Ich habe bereits eine Arbeit an Ort und Stelle, indem Sie eine temporäre Tabelle erstellen und bedingte DELETE-Anweisungen ausführen, die das gleiche Ergebnis erzielen, das ich mit der obigen CASE-Anweisung versuche. Ich bin jedoch neugierig, zu wissen, ob die andere Methode, die diese Frage betrifft, möglich ist.