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,
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 sql : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select valeur1, 'ok' from t group by valeur1 having min(valeur2) = 'ok' order by valeur1 asc;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager