Bonjour,
Je cherche à faire une requête qui me renvoie une ligne seulement si pour une valeur1 , chaque valeur 2 est égal à OK
ex :
valeur1 valeur2
val1 ok
val1 ok
renvoie
val1 ok
et si
valeur1 valeur2
val1 ok
val1 ko
renvoie
rien
merci
Version imprimable
Bonjour,
Je cherche à faire une requête qui me renvoie une ligne seulement si pour une valeur1 , chaque valeur 2 est égal à OK
ex :
valeur1 valeur2
val1 ok
val1 ok
renvoie
val1 ok
et si
valeur1 valeur2
val1 ok
val1 ko
renvoie
rien
merci
Bonjour,
Il faudrait un peu plus de détails sur la structure et la volumétrie de la table, mais sur le principe, si la table n'est pas trop volumineuse, on peut faire quelque chose d'assez simple :
Code:
1
2
3
4
5
6 select distinct valeur1, valeur2 From ma_table t1 Where Not Exists (Select null From ma_table t2 Where t2.valeur1 = t1.valeur1 and t2.valeur2 != 'ok')
Qu'est ce que ça donne ça ?
Code:
1
2
3
4 select val1, val2, sum (case when val2='OK' then 1 end) as cnt_ok, count(*) as cnt_tot from t group by val1, val2 having sum (case when val2='OK' then 1 end) = count(*)
On peut faire plus simple :
Code:
1
2
3
4
5 select valeur1, 'ok' from t group by valeur1 having min(valeur2) = 'ok' order by valeur1 asc;