J'ai la clause where suivante qui commence par ce qui suit:
DECLARE @Birthdate = 1
SELECT ...
FROM ...
JOIN ...
WHERE A.organization_id = 1
AND LEFT(A.[first_name], 3) = LEFT(B.[first_name], 3)
AND LEFT(A.[last_name], 3) = LEFT(B.[last_name], 3)
Après cela, je voudrais exécuter des clauses supplémentaires sous condition.
Par exemple:
@Birthdate = 1
alors ajoutezAND A.[birthdate] = B.[birthdate]
J'ai essayé ce qui suit et aucun ne semble fonctionner correctement:
Ex 1:
AND (@Birthdate = 1 AND A.[birthdate] = B.[birthdate])
Ex 2:
AND ((@Birthdate = 1 AND A.[birthdate] = B.[birthdate]) OR
(@Birthdate = 0 AND (A.[birthdate] = B.[birthdate] OR
A.[birthdate] <> B.[birthdate])))
Des suggestions sur ce que je fais mal?
Vous pouvez utiliser un or
pour appliquer votre filtre ou simplement renvoyer toutes les lignes lorsque@Birthdate = 0
SELECT
...
FROM
...
WHERE
(
-- Apply the filter if applicable
(
@Birthdate = 1
and A.[birthdate] = B.[birthdate]
)
-- Or return everything
or @Birthdate <> 1
)
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots