Ich benötige eine bedingte WHERE-Klausel, die wie folgt funktioniert:
Select *
From Table
If (@booleanResult)
Begin
Where Column1 = 'value1'
End
Else
Begin
Where column1 = 'value1' and column2 = 'value2'
End
Jede Hilfe wäre geschätzt.
Ich benötige eine bedingte WHERE-Klausel, die wie folgt funktioniert:
Select *
From Table
If (@booleanResult)
Begin
Where Column1 = 'value1'
End
Else
Begin
Where column1 = 'value1' and column2 = 'value2'
End
Jede Hilfe wäre geschätzt.
Basierend auf dem Skript in Frage scheint es, als ob Sie die Bedingung für Column1
benötigen, unabhängig davon, ob die Variable @booleanResult
auf true oder false gesetzt ist. Daher habe ich diese Bedingung zur WHERE
-Klausel hinzugefügt und in der verbleibenden Bedingung überprüft, ob die Variable auf 1 (true) eingestellt ist oder ob sie auf 0 (false) gesetzt ist, dann wird auch die Bedingung auf Column2
überprüft.
Dies ist nur eine weitere Möglichkeit, dies zu erreichen.
CREATE TABLE MyTable
(
Column1 VARCHAR(20) NOT NULL
, Column2 VARCHAR(20) NOT NULL
);
INSERT INTO MyTable (Column1, Column2) VALUES
('Wert1', ''),
('', 'Wert2'),
('Wert1', 'Wert2');
DECLARE @booleanResult BIT
SET @booleanResult = 1
SELECT *
FROM MyTable
WHERE Column1 = 'Wert1'
AND ( @booleanResult = 1
OR (@booleanResult = 0 AND Column2 = 'Wert2')
);
Ausgabe:
COLUMN1 COLUMN2
------- -------
Wert1
Wert1 Wert2
DECLARE @booleanResult BIT
SET @booleanResult = 0
SELECT *
FROM MyTable
WHERE Column1 = 'Wert1'
AND ( @booleanResult = 1
OR (@booleanResult = 0 AND Column2 = 'Wert2')
);
Ausgabe:
COLUMN1 COLUMN2
------- -------
Wert1 Wert2
Abfrage 1: Wenn der @CompanyID auf -1 gesetzt ist, werden alle Datensätze ausgewählt
Abfrage 2: Wenn der @CompanyID auf 10 oder 11 oder 12 gesetzt ist, werden nur die Datensätze ausgewählt, bei denen die companyid=@CompanyID ist
Declare @CompanyID int
Set @CompanyID = -1
select * from sales
where 1=IIF(@CompanyID =-1, 1, IIF(CompanyID =@CompanyID,1,0))
Set @CompanyID = 10
select * from sales
where 1=IIF(@CompanyID =-1, 1, IIF(CompanyID =@CompanyID,1,0))
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.