简体   繁体   中英

SQL Query to only return certain rows depending on value of column

I have a table that is similar to:

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

I need a query that will result in:

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

So only return rows that have a 'cycle' value of "s", unless there is no value of "s" for a particular 'id' in which case it should return the row with the 'cycle' value of "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;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM