with t as
(select '001' seq, '是' flag
from dual
union all
select '001', '否'
from dual
union all
select '002', '是'
from dual
union all
select '002', '否'
from dual
union all
select '003', '是'
from dual
union all
select '003', '否'
from dual
union all
select '004', '否' from dual)
select seq,case when instr(wm_concat(flag),'是')>0 then '是' else '否' end from t group by seq;
十分简单;我的表名是 rexsen 字段情况:
语句:
select * from
(select * from rexsen where id in (select id from ( select id,count(id) s from rexsen group by id) where s=2) and name <> '否')union
(select * from rexsen where id not in (select id from ( select id,count(id) s from rexsen group by id) where s=2) )
with t as
(select '001' seq, '是' flag
from dual
union all
select '001', '否'
from dual
union all
select '002', '是'
from dual
union all
select '002', '否'
from dual
union all
select '003', '是'
from dual
union all
select '003', '否'
from dual
union all
select '004', '否' from dual)
select seq, min(flag) keep(dense_rank last order by flag)
from t
group by seq;