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.