2017-06-19 4 views
0

J'ai un tableau comme ci-dessous, s'il vous plaît aidez-moi à le construire.Même requête de colonne pour différentes conditions

Exemple:

column 1 column 2 
111111  100 
111111  101 
111111  102 
222222  101 
222222  102 
333333  100 

Je suis à la recherche colonne1 qui a seulement 100 mais pas 101 ou 102 pour la même colonne.

De mon exemple ci-dessus, 333333 100 est exactement je cherche, qui a 100 mais pas 101 et 102.

+0

Quelle base de données utilisez-vous? – John

+0

Fournissez un exemple SQL que vous avez jusqu'à présent. –

+0

Je construis ceci dans DB2. – Gireesh

Répondre

0

Vous pouvez utiliser group by et having si vous voulez column1 valeur:

select column1 
from t 
group by column1 
having sum(case when column2 = 100 then 1 else 0 end) > 0 and 
     sum(case when column2 in (101, 102) then 1 else 0 end) = 0; 

Si ce sont les trois seules valeurs qui vous tiennent abou t, vous pouvez simplifier à:

select column1 
from t 
where column2 in (100, 101, 102) 
group by column1 
having max(column2) = 100; 
+0

merci Gordon, il a parfaitement fonctionné. – Gireesh

0

Essayez not exists opérateur

SELECT * 
FROM table t1 
WHERE column2 = 100 
AND NOT EXISTS (
    SELECT * FROM table t2 
    WHERE t1.column1 = t2.column1 
    AND t2.column2 in (101, 102) 
) 
+0

fonctionne parfaitement, merci krokodilko – Gireesh