Oracle 11g PIVOT/UNPIVOT sql function are very useful to generate data in crosstab format
SELECT * FROM
(SELECT deptno,job,sal FROM emp) e
PIVOT(SUM(sal)
FOR job IN ('CLERK' CLERK,'SALESMAN' SALESMAN,
'MANAGER' MANAGER)
ORDER BY deptno;
DEPTNO CLERK SALESMAN MANAGER
---------- ---------- ---------- ----------
10 1300 2450
20 1900 2975
30 950 5600 2850
SELECT * FROM
(SELECT deptno,job,sal FROM emp) e
PIVOT(SUM(sal)
FOR job IN ('CLERK' CLERK,'SALESMAN' SALESMAN,
'MANAGER' MANAGER)
ORDER BY deptno;
DEPTNO CLERK SALESMAN MANAGER
---------- ---------- ---------- ----------
10 1300 2450
20 1900 2975
30 950 5600 2850