По таблице из предыдущего примера написать запрос, который выведет данные общей суммой за каждый месяц по типам документов с итогами по каждому типу и общим итогом.
Вариант запроса:
SELECT pd.pay_type, pd.month_year AS mon, SUM(pay_sum) AS sm FROM (SELECT pd.pay_type, to_char(pd.pay_date, 'mm.yyyy') AS month_year, pd.pay_sum FROM payment_document pd) pd GROUP BY ROLLUP(pd.pay_type, pd.month_year); / SELECT pd.pay_type, to_char(pd.pay_date, 'MM.YYYY') AS mon, SUM(pd.pay_sum) AS sm FROM payment_document pd GROUP BY CUBE(pd.pay_type, to_char(pd.pay_date, 'MM.YYYY')) HAVING grouping_id(pd.pay_type, to_char(pd.pay_date, 'MM.YYYY')) <> 2 ORDER BY pd.pay_type ASC; /
Результат:
PAY_TYPE MON SM 1 01.2012 600 1 02.2012 900 1 1500 2 01.2012 600 2 02.2012 700 2 04.2012 800 2 05.2012 900 2 06.2012 1000 2 4000 3 01.2012 1100 3 03.2012 1200 3 05.2012 2700 3 06.2012 1500 3 6500 12000
P.S.
Конфигурация СУБД — Oracle Database 11g Express Edition Release 11.2.0.2.0
IDE — PL/SQL Developer Version 11.0.6.1776