9 Stimmen

SQL Conditional Where

Ich habe eine Stored Procedure namens spGetOrders, die einige Parameter akzeptiert: @startdate und @enddate. Diese Prozedur fragt eine Tabelle "Orders" ab. Eine der Spalten in der Tabelle heißt "ClosedDate". Diese Spalte enthält NULL, wenn eine Bestellung nicht abgeschlossen wurde, oder einen Datumswert, wenn sie abgeschlossen wurde. Ich möchte einen @Closed-Parameter hinzufügen, der einen Bit-Wert annehmen wird. In einer einfachen Welt würde ich das tun können.

select * from orders o
where o.orderdate between @startdate AND @enddate
and (if @Closed = 1 then o.ClosedDate IS NULL else o.ClosedDate IS NOT NULL)

Offensichtlich wird das nicht funktionieren Ich bin auch bei dynamischen Sql suchen, die mein letzter Ausweg ist, aber beginnen, wie die Antwort aussehen.

Bitte helfen Sie

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X