ist Ich weiß, dass dies eine grundlegende Frage ist, aber ich kann nicht mit der richtigen Kombination von Suchbegriffen kommen, um die Antwort zu bekommen, die ich brauche.Wählen Sie alle Datensätze aus, wenn der Parameter -1
Ich arbeite an einer gespeicherten Prozedur, wo ein Parameter @AccountTypeId
ist. Der Parameter kann 1
, 2
, 3
oder -1
sein. Wenn @AccountTypeId
-1
ist, sollte alle Kontotypen (1
, 2
und 3
) zurückgegeben werden. Ich kann ein SP leicht genug, um schreiben, die auf @AccountTypeId
Basis wird Filter:
CREATE PROCEDURE Accounts_SP (@AccountTypeId INT)
AS
SELECT *
FROM Accounts
WHERE AccountTypeId = @AccountTypeId
Das Problem der SP Rückkehr alle AccountType
s aufweist, wenn @AccountTypeId
-1
ist.
Ich habe versucht, eine CASE
Anweisung in der WHERE
Klausel wie folgt aus:
CREATE PROCEDURE Accounts_SP (@AccountTypeId INT)
AS
SELECT *
FROM Accounts
WHERE AccountTypeId IN (CASE @AccountTypeId WHEN -1
THEN (SELECT AccountTypeId FROM AccountTypes)
ELSE @AccountTypeId
END)
Aber es gibt mir die folgende Fehlermeldung:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Ich bin sicher, dass es eine einfache Möglichkeit, um all die Rekorde zu bekommen und ich übertreibe nur die Dinge. Kann mir bitte jemand in die richtige Richtung zeigen?
Ich wusste, dass es so etwas einfach war. Ich akzeptiere die Antwort, nachdem das Zeitlimit abgelaufen ist. Vielen Dank!! –