2010-07-24 4 views
0

J'ai une table qui est semblable à:requête SQL à renvoie uniquement certaines lignes en fonction de la valeur de la colonne

cycle | id | name 
------|-------|------ 
0  | 0012 | bob 
s  | 0012 | bob 
1  | 0012 | bob 
0  | 6208 | sally 
1  | 6208 | sally 
0  | 3276 | jane 
s  | 3276 | jane 
1  | 3276 | jane 
0  | 8736 | harry 
s  | 8736 | harry 

je besoin d'une requête qui se traduira par:

cycle | id | name 
------|-------|------ 
s  | 0012 | bob 
0  | 6208 | sally 
s  | 3276 | jane 
s  | 8736 | harry 

retour Alors seulement les lignes qui ont une valeur de «cycle» de «s», à moins qu'il n'y ait pas de valeur de «s» pour un «id» particulier auquel cas il devrait retourner la ligne avec la valeur «cycle» de «0».

Répondre

0
SELCET cycle, id, name from tbl1 as t1 where cycle='s' or 
(cycle=0 and (select count(cycle) from tbl1 as t2 where t2.id = t1.id and t2.cycle='s') <= 0) 
group by t1.cycle,t1.id; 
Questions connexes