Verwendung der CASE-Anweisung in der IN-Klausel

8

Ist es möglich, eine CASE-Anweisung innerhalb einer IN-Klausel zu verwenden?

Dies ist eine vereinfachte Version von dem, was ich versucht habe, richtig zu kompilieren:

%Vor%

Danke!

    
crjunk 27.06.2012, 17:58
quelle

4 Antworten

21

CASE gibt nur einen skalaren Wert zurück. Sie können dies stattdessen tun. (Ich gehe davon aus, dass, wenn @StatusID = 99, ein StatusID-Wert von 99 keine Übereinstimmung ist.)

%Vor%     
RedFilter 27.06.2012, 18:00
quelle
3

Nein. Stattdessen können Sie es nach draußen legen

%Vor%

Sie können dies auch ohne die case-Anweisung schreiben.

Eine weitere Option ist dynamisches SQL, bei dem Sie tatsächlich eine Zeichenfolge mit der SQL-Anweisung erstellen und dann ausführen. Dynamisches SQL scheint jedoch in diesem Fall übertrieben zu sein.

    
Gordon Linoff 27.06.2012 18:02
quelle
0

Ich dachte, ich würde das mit einem Table Valuue Constructor anders machen - sind TVCs im folgenden Kontext nicht erlaubt?

%Vor%     
whytheq 28.06.2012 06:35
quelle
0

Sie können dies mit TVCs tun, aber der Ansatz ist ein wenig anders. Es wird keine Groß- / Kleinschreibung verwendet, aber es wird besser skaliert, wenn mehrere Optionen zur Auswahl stehen:

%Vor%

oder wenn Sie alles in der where-Klausel benötigen, dann:

%Vor%     
Jon Egerton 19.06.2014 12:21
quelle