SQL Server 2008 - boolean modifica della variabile di query
-
12-09-2019 - |
Domanda
Ho la seguente query:
DECLARE @IsStocked bit
SELECT * FROM Products p WHERE p.LastSeen > GETDATE() - 30
Questo restituisce tutti Prodotti che ha visto, negli ultimi 30 giorni.
La mia domanda è, io vorrei che i p.LastSeen > GETDATE() - 30
la clausola si applicano solo quando @IsStocked = true
.
Questo è parte di un più ampio query, e mi piacerebbe raggiungere questo senza l'utilizzo di IF/ELSE (es.se @IsStocked = false
il p.LastSeen > GETDATE() - 30
sezione della clausola WHERE viene completamente ignorata).
Grazie!
Soluzione
DECLARE @IsStocked bit
SELECT * FROM Products p
WHERE @IsStocked = 0 OR (p.LastSeen > GETDATE() - 30);
Altri suggerimenti
DECLARE @IsStocked bit;
SELECT *
FROM Products p
WHERE (@IsStocked = 1 AND p.LastSeen > GETDATE() - 30)
OR @IsStocked = 0;
Qui è la mia Query in base alla tua domanda
DECLARE @IsStocked bit
Set @IsStocked=1
Select * from Product
Where LastSeen = Case When (@IsStocked=1) THEN GETDATE() - 30
Else LastSeen END
spero che sarà di aiuto.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow