Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как вычислить подитоги?  [new]
trinbory
Member

Откуда:
Сообщений: 4
Имеется отчёт во вложении.
Необходимо добавить подитоги по каждому LOB (по каждому из столбца-месяца) + столбец Grand Total (сумма по столбцам (месяцам) для каждой строки)) + СУММА ИТОГО (сумма SUM по LOB)).
Подскажите, как это сделать?
28 мар 16, 16:14    [18987091]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить подитоги?  [new]
trinbory
Member

Откуда:
Сообщений: 4
Картинка с другого сайта.

К сообщению приложен файл. Размер - 23Kb
28 мар 16, 16:19    [18987125]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить подитоги?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
trinbory,

см. rollup (для начала ;)
28 мар 16, 16:29    [18987180]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить подитоги?  [new]
trinbory
Member

Откуда:
Сообщений: 4
orawish,
пытаюсь к имеющемуся запросу, который выводит таблицу исходную сделать ролап.

select NVL(NVL(t1.LOB, t2.LOB), t3.LOB) LOB, NVL(NVL(t1.CHARGE_TYPE, t2.CHARGE_TYPE), t3.CHARGE_TYPE) CHARGE_TYPE, NVL(NVL(t1.IS_CORR, t2.IS_CORR), t3.IS_CORR) IS_CORR, t3.AMOUNT PREV_PREV_MONTH, t2.AMOUNT PREV_MONTH, t1.AMOUNT CUR_MONTH, NVL(NVL(t1.GROUP_ID, t2.GROUP_ID), t3.GROUP_ID) GROUP_ID
from
(select *
from ONM_LIST.API_142_172
where TRUNC(period, 'MONTH') = TRUNC(SYSDATE, 'MONTH')
) t1
full outer join
(select *
from ONM_LIST.API_142_172
where TRUNC(period, 'MONTH') = TRUNC(ADD_MONTHS(SYSDATE, -1), 'MONTH')
) t2 on t1.LOB = t2.LOB and t1.CHARGE_TYPE = t2.CHARGE_TYPE and t1.IS_CORR = t2.IS_CORR
full outer join
(select *
from ONM_LIST.API_142_172
where TRUNC(period, 'MONTH') = TRUNC(ADD_MONTHS(SYSDATE, -2), 'MONTH')
) t3 on NVL(t1.LOB, t2.LOB) = t3.LOB and NVL(t1.CHARGE_TYPE, t2.CHARGE_TYPE) = t3.CHARGE_TYPE and NVL(t1.IS_CORR, t2.IS_CORR) = t3.IS_CORR
GROUP BY ROLLUP (LOB, CHARGE_TYPE, IS_CORR)

Пишет ORA-00918: column ambiguously defined.

П.С.: с PL\SQL я на ВЫ :( не судите строго.
28 мар 16, 17:08    [18987433]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить подитоги?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
trinbory,

~
with t0 as (select level as a, power(level,2) b from dual connect by level < 10
  ), t1 as (select a,b,mod(a,2) gr from t0)
 select case when grouping(gr) = 1  then 'итог'
             when grouping(a)  = 1  then '1/2 итог' end 
       ,sum(a),sum(b),sum(a+b) 
   from t1 group by rollup(gr,a);
28 мар 16, 19:53    [18988190]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить подитоги?  [new]
trinbory
Member

Откуда:
Сообщений: 4
orawish,
прошу простить за невежество, но в какую часть запроса это нужно поместить?
29 мар 16, 10:57    [18989909]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить подитоги?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
trinbory
orawish,
прошу простить за невежество, но в какую часть запроса это нужно поместить?

для начала - попробуйте выполнить
на входе, в качестве тестовых данных, тут натуральный ряд
дальше он разделяется на "чётные" и "нечетные"
потом эта ботва сворачивается в рулон

очевидно, что вам надо ваши данные подсунуть вместо ботвы
29 мар 16, 11:39    [18990198]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить