2017-03-29 4 views
0

Ich habe ein Excel-Arbeitsblatt mit einer Dropdown-Datenvalidierungsbox, in der der Benutzer aus einer Liste ganzzahliger Werte auswählen kann, um eine Abteilung oder das Wort "ALL" zu bestimmen. Ich übergebe den Wert dieser Zelle an eine gespeicherte Prozedur mit SQL. In der SQL habe ich WHERE [email protected].So übergeben Sie mehrere Werte an eine gespeicherte Prozedur

Wenn ich nur eine Abteilung Auswahl zulassen werde, funktioniert das gut, aber ich möchte auch für alle Abteilungen zulassen.

Gibt es irgendwelche Ideen, wie man das macht? Braucht es eine Art Trick mit dem Operator IN oder etwas anderem?

Antwort

1

Verwenden Sie eine CASE Anweisung, wenn Sie also "ALL" haben, können Sie das Feld Abteilung zurückgeben. Wenn es etwas anderes ist, übergeben Sie den Wert, den Sie gesendet haben:

Where Department = CASE @input WHEN 'ALL' Then Department ELSE @input END 
+0

Danke für Ihre Hilfe. Die Syntax, die letztendlich half, war wie folgt: WHERE Abteilung = Fall, wenn @ Dept = 'ALL' dann Abteilung sonst @ Dept Ende – JFrizz

1

Zwei Lösungen hier im gespeicherten Skript:

  1. legten eine if Aussage dann werden Sie auf Gruppen von Anfragen haben.
  2. setzen Sie eine iif/case Aussage innerhalb der Kriterien.
+0

Vielen Dank für Ihre Hilfe! Ich entschied mich für Methode 2, die sehr hilfreich war! Ihre Antwort in Kombination mit den anderen war sehr hilfreich. – JFrizz

1

Wenn Ihr Benutzer "ALL" wählt, können Sie die Paramter auf NULL gesetzt:

select * from table1 WHERE Department=isnull(@Dept,Department) 

Wenn der Wert von @Dept NULL die Abfrage wird, ist:

select * from table1 WHERE Department=Department 

wie 1=1.

+0

Danke. Wie würden Sie den Parameter auf NULL setzen? Was ist die korrekte Syntax? – JFrizz

+0

Danke für Ihre Hilfe! Ihre Antwort in Kombination mit den anderen hat mir geholfen, dieses Problem zu lösen. – JFrizz

Verwandte Themen