Supposons que j'ai une table comme ci-dessous:
ID | Account| Status ---+--------+------- 1 | acct1 | A 1 | acct2 | S 1 | acct3 | C 2 | acct4 | C 2 | acct5 | C 3 | acct6 | A 3 | acct7 | C 4 | acct8 | C 4 | acct9 | C 4 | acct10 | C
Condition: renvoyer l'ID si les counts n'ont aucun statut "A" et "S".
Dans ce cas, je veux seulement que les ID '2' et '4' soient returnnés.
Vous pouvez utiliser HAVING
et SUM
conditionnel:
SELECT ID FROM tab GROUP BY ID HAVING SUM(CASE WHEN Status IN ('A', 'S') THEN 1 ELSE 0 END) = 0
Sélectionnez d'abord l'identifiant dont l'logging n'a pas 'A' et 'S'. Ensuite, obtenez un logging distinct:
Select distinct(ID) as ID from table_name where id not in ( select ID from table_name where status in('A', 'S') )