SQL-HILFE - Bedingte where-Klausel basiert auf einer BIT-variable - SQL-Server
Ich brauche Hilfe beim verfassen einer bedingten where-Klausel. hier ist meine situation:
Ich habe einen bit-Wert, der bestimmt, welche Zeilen zurückgegeben werden, die in einer select-Anweisung. Wenn der Wert true ist, muss ich für die Rückgabe von Zeilen, wo die import_id Spalte ist nicht null, wenn false, dann möchte ich die Zeilen, in denen die import_id Spalte null ist.
Mein Versuch so eine Abfrage (unten) scheint nicht zu funktionieren, was ist der beste Weg, dies zu erreichen?
DECLARE @imported BIT
SELECT id, import_id, name FROM Foo WHERE
(@imported = 1 AND import_id IS NOT NULL)
AND (@imported = 0 AND import_is IS NULL)
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie die
AND
zuOR
Zerlegen Ihren original-Anweisung
haben Sie im wesentlichen geschrieben
wich entspricht
welche Ergebnisse in zwei Paare von Klauseln, die völlig negieren sich gegenseitig
Ich denke, du meintest
Ihre Abfrage benötigen würde, ein ODER wählen Sie zwischen den verschiedenen filtern.
Es ist besser für den optimizer, wenn Sie separate Abfragen in diesem Fall. Ja, code-Redundanz ist schlecht, aber der Optimierer diese sind radikal Verschieden (und nicht redundante) Abfragen.