J'ai trouvé des tas de similaire questions que j'ai, mais je n'ai pas pu obtenir la réponse exacte!Comment appliquer un filtre utilisateur avec if condition dans la clause SQL where?
Je la condition suivante dans SQL where
declare @status int, @applyUserFilter bit, @user nvarchar(156)
--following are values being set by UI
set @activeStatus = 1
set @applyUserFilter = 1
set @user = 'xyzUser'
--I want to filter the list by users only when @applyUserFilter flag is true otherwise it should return the list for all users
--This is what i tried but gives syntax error
WHERE ActiveStatus = @activeStatus
AND CASE WHEN @applyUserFilter = 1 THEN User = @user
Note: Ceci montre que si le code de l'article!
Utiliser '' CASE' dans un WHERE' déclarative vous oblige à définir un 'column' égal au résultat de la' CASE'. Ainsi, lorsque le scénario '@applyUserFilter = 1' est vrai, une colonne doit être définie sur 1 pour le filtrage. – Simon
Je pense que ce que vous essayez d'atteindre est: 'User = CASE WHEN @applyUserFilter = 1 alors @user else null end' avec l'instruction' else' étant optionnelle. – Simon
Merci! @Simon dans ce cas il ne retournera rien quand '@applyUserFilter = 0', dans ce cas je veux qu'il retourne la liste complète pour tous les utilisateurs – updev