1
votes

Comment écrire une requête avec WHERE avec deux conditions

En ce moment, j'ai:

WHERE flag_1 NOT IN ("D") AND flag_2 NOT IN ("D")

J'ai deux groupes de personnes travaillant sur les mêmes données, et une fois qu'un groupe est terminé, ils le "marqueront" D code >, mais le rapport devra toujours extraire les informations jusqu'à ce que LES DEUX soient marqués D .

À l'heure actuelle, le rapport exclut les données si l'un ou l'autre est marqué D code>, mais je ne veux l'exclure que lorsque les deux aspects sont complétés et marqués D.

Des conseils?


2 commentaires

Veuillez fournir des exemples de données.


Que diriez-vous de «D» dans (flag_1, flag_2) ? Vous devriez probablement consulter les lois de De Morgan.


3 Réponses :


5
votes

Je souhaite l'exclure uniquement une fois que les deux aspects sont terminés et marqués "D".

Cela se traduirait par:

WHERE NOT (flag_1 = 'D' AND flag_2 = 'D')

NB: je ne vois pas le point pour l'opérateur IN avec une seule valeur dans la liste , alors je suis passé à un simple =.


0 commentaires

1
votes

Ou vous pouvez le traduire en WHERE flag_1 <> 'D' AND flag_2 <> 'D' . Vous pouvez utiliser la condition SQL IN (parfois appelée l'opérateur IN ) si vous souhaitez tester facilement si une expression correspond à une valeur dans une liste de valeurs. Dans votre cas, vous n'avez qu'une seule valeur à évaluer.

NOT est une négation, <> (différent de) est un opérateur de comparaison, ils sont tous deux au standard ISO. Et n'ayez aucune différence de performance.


0 commentaires

2
votes
WHERE flag_1 <> 'D' OR flag_2 <> 'D'
If you want the report to continue to pull the records until both flags are at 'D', checking the flags that don't equal 'D' will pull them into the set.

0 commentaires