Obtenir l'ID si la table possède une ou plusieurs lignes pour une condition

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') )