with tab as (
select 'Ivanov' as name, '123QWSWRRA' as code, 1 as id from dual union all
select 'Ivanov' as name, '143QÐÀÏÐÏÀÐ' as code, 1 as id from dual union all
select 'Ivanov' as name, '143QÐÀÏÐDDG' as code, 2 as id from dual union all
select 'Ivanov' as name, '143QÐÀÏÐDDG' as code, 2 as id from dual union all
select 'Ivanov' as name, '143QÐÀÏÐDDG' as code, 2 as id from dual union all
select 'Petrov' as name, '133QÐÂÌÂÀÌ' as code, 3 as id from dual union all
select 'Petrov' as name, '133QÐÂÌÂÀÌ' as code, 3 as id from dual union all
select 'Petrov' as name, '133QÐÂÌÂÀÌ' as code, 3 as id from dual union all
select 'Petrov' as name, '133QÐÂÌÂÀÌ' as code, 3 as id from dual union all
select 'Petrov' as name, '133QÐÂÌÂÀÌ' as code, 3 as id from dual union all
select 'Petrov' as name, '133QÐÂÌÂÀÌ' as code, 3 as id from dual
)
select name, sum(c1) c1, sum(c2) c2, sum(c3) c3 from
(
select id,
name,
decode(id, 1, count(1), 0) c1,
decode(id, 2, count(1), 0) c2,
decode(id, 3, count(1), 0) c3
from tab
group by name, id
having count(1) > 1
)
group by name
|