PIVOT and UNPIVOT in Oracle

PIVOT

SELECT * FROM (
  SELECT department_id, job_id, salary FROM employees
)
PIVOT (
  SUM(salary) FOR job_id IN ('IT_PROG', 'SA_REP', 'FI_ACCOUNT')
);

UNPIVOT

SELECT * FROM (
  SELECT department_id, IT_PROG, SA_REP, FI_ACCOUNT FROM salary_summary
)
UNPIVOT (
  salary FOR job_role IN (IT_PROG AS 'IT_PROG', SA_REP AS 'SA_REP', FI_ACCOUNT AS 'FI_ACCOUNT')
);