with t as
(select deptno, job, sum(sal) sum_sal from emp group by deptno, job),
tt as
(select distinct job from t),
ttt as (select b.deptno, a.job, sum_sal
from tt a
left join t b partition by (b.deptno)
on a.job = b.job)
select sum(case ttt.deptno when 10 then nvl(ttt.sum_sal,0) else 0 end ),sum(case ttt.deptno when 20 then nvl(ttt.sum_sal,0) else 0 end ),
sum(case ttt.deptno when 30 then nvl(ttt.sum_sal,0) else 0 end ) from ttt
group by ttt.deptno
(select deptno, job, sum(sal) sum_sal from emp group by deptno, job),
tt as
(select distinct job from t),
ttt as (select b.deptno, a.job, sum_sal
from tt a
left join t b partition by (b.deptno)
on a.job = b.job)
select sum(case ttt.deptno when 10 then nvl(ttt.sum_sal,0) else 0 end ),sum(case ttt.deptno when 20 then nvl(ttt.sum_sal,0) else 0 end ),
sum(case ttt.deptno when 30 then nvl(ttt.sum_sal,0) else 0 end ) from ttt
group by ttt.deptno