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

Откуда:
Сообщений: 8
Уважаемые форумчане есть такой запрос и результат.мне нужно в конце(в самом низу) данной таблицы ИТОГИ(суммы) по столбцам.
Помогите как быть?
select C_PkgDep.fGetNameDep(t2.ID) as TO_DEP_NAME,
U_Pkgdep.fPostindex(t2.ID) as TO_DEP_CODE,
nvl(t1.cnt,0) cnt,
nvl(t1.OBUCH,0)OBUCH,
nvl(t1.NALOJ,0) NALOJ,
nvl(t1.ned_obuch,0)ned_obuch,
nvl(t1.ned_naloj,0) ned_naloj,
nvl(t1.OBUCH_D,0) OBUCH_D,
nvl(t1.S_NALOJ_D,0) S_NALOJ_D,
nvl((t1.ned_obuch + t1.ned_naloj),0) HRANENIE
from(
select TO_DEP_NAME,
count(barcode)cnt,
sum(OBUCH)OBUCH ,
sum(NALOJ)NALOJ,
sum(ned_obuch)ned_obuch,
sum(ned_naloj)ned_naloj,
case when sum(obuch) != 0 then round(((sum(obuch)-sum(ned_obuch))*100/sum(obuch)),1) else 0 end as OBUCH_D,
case when sum(naloj) != 0 then round(((sum(naloj)-sum(ned_naloj))*100/sum(naloj)),1) else 0 end as S_NALOJ_D

from (
select t.*,
case when STATE_CODE in ('S_STRSC','S_STR') and t.mailctg not in ('4','2') then 1
else 0 end as NED_OBUCH,
case when STATE_CODE in ('S_STRSC','S_STR') and t.mailctg in ('4','2') then 1
else 0 end as NED_NALOJ
from (
select m.DEP_ID as TO_DEP_NAME,
um.barcode,
um.mailctg,
case when um.mailctg not in ('4','2') then 1
else 0 end as OBUCH,
case when um.mailctg in ('4','2') then 1
else 0 end as NALOJ,
U_PKGSRT.fBopStateExecDt(scordtl.PROC_ID,um.DEP_ID,um.ID,(select U_PKGSRT.fLastExecDt(mo.dep_id,mo.id) as DOCDOPER from dual)) as STATE_CODE
from
U_MLORD mo, T_PROCMEM m, T_ORD o, C_USR u, U_DELIVREG ud, U_PSTMAN psm, U_DLVBILLDTL dtl,
T_BOP_STAT s, T_PROCESS p, C_CLASS cc, C_ENTITY ce,
(select
Bs_Bop.fGetBopID('PST_DLVORD') as BOP_ID,
Bs_Scen.fGetScenNOrd(Bs_Bop.fGetBopID('PST_DLVORD'), 'PROCESS') as PROC_NORD
from dual) prm,
U_SCORDDTL scordtl,
u_mail um

where p.ID = m.ID
and u.ID(+) = o.ID_US
and M.MAINFL = '1'
and s.ID = p.BOP_ID and s.NORD = p.NSTAT
and mo.ID = m.ORD_ID and mo.dep_id = m.dep_id
and mo.id = o.id and mo.dep_id = o.dep_id
and mo.ent_id = o.ord_id
and ud.ID(+) = mo.dlv_id
and o.ord_id = ce.id
and cc.code = ce.code
and ce.CODE = 'U_MLDLVORD'
and dtl.DEP_ID = mo.DEP_ID
and dtl.ID = mo.ID
and psm.DEP_ID = dtl.PSTMAN_DEP_ID
and psm.ID = dtl.PSTMAN_ID
and scordtl.DEP_ID = mo.DEP_ID
and scordtl.ID = mo.ID
and um.id=scordtl.id_dtl
and um.dep_id=scordtl.dep_id_dtl
and s.code in ('S_ISSUED','S_PROCESSED')
and mo.DEP_ID+0 = any(select id from c_dep start with code = &DEP_CODE connect by prior id=id_hi)
and mo.DRECV <= &DEND
and mo.DRECV >= &DBEG
and um.mailtype in ('7','C','D','H','J','K','L','N','O','Q','S','W','Z')
)t
)
group by TO_DEP_NAME
)t1 right join
c_dep t2
on t1.TO_DEP_NAME = t2.id
where t2.ID = any(select id from c_dep start with code = &DEP_CODE connect by prior id=id_hi)

К сообщению приложен файл. Размер - 37Kb
14 сен 18, 13:55    [21674718]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
sanzhar333
Member

Откуда:
Сообщений: 8
Пробовал через UNION,но никак не получается
14 сен 18, 13:59    [21674729]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
XMLer
Member

Откуда:
Сообщений: 237
sanzhar333,

добавить строки можно так
14 сен 18, 14:01    [21674734]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
sanzhar333
Member

Откуда:
Сообщений: 8
XMLer,там ничего не понятно
14 сен 18, 14:09    [21674745]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
XMLer
Member

Откуда:
Сообщений: 237
sanzhar333,
совсем примитивно и на русском
14 сен 18, 15:34    [21674845]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9054
XMLer
sanzhar333,
совсем примитивно и на русском


Не все так просто. У него in-line view с GROUP BY потом right join c c_dep и посему либо еще один GROUP BY либо right join c c_dep дeлать до GROUP BY.

SY.
14 сен 18, 15:45    [21674859]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1276
sanzhar333,

  1  select
  2  case
  3            when grouping(deptno) = 1 then 'Всього'
  4            else to_char(deptno)
  5  end d
  6  ,deptno,sum(sal) ssal  from emp
  7* group by grouping sets ((deptno),())
SQL> /

D              DEPTNO       SSAL
---------- ---------- ----------
10                 10       8750
20                 20      10875
30                 30       9400
Всього                     29025


.....
stax
14 сен 18, 15:46    [21674860]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9054
Stax,

У него in-line view с GROUP BY потом right join:

SQL> with e as (
  2             select  case
  3                       when grouping(deptno) = 1 then 'Total'
  4                       else to_char(deptno)
  5                     end d,
  6                     deptno,
  7                     sum(sal) ssal
  8               from  emp
  9               group by grouping sets ((deptno),())
 10            )
 11  select  *
 12    from      e
 13          right join
 14              dept d
 15            on e.deptno = d.deptno
 16  /

D         DEPTNO       SSAL     DEPTNO DNAME          LOC
----- ---------- ---------- ---------- -------------- -------------
10            10       8750         10 ACCOUNTING     NEW YORK
20            20      10875         20 RESEARCH       DALLAS
30            30      10400         30 SALES          CHICAGO
                                    40 OPERATIONS     BOSTON

SQL> with e as (
  2             select  d.*,
  3                     e.sal
  4               from      emp e
  5                     right join
  6                         dept d
  7                       on e.deptno = d.deptno
  8            )
  9  select  case
 10            when grouping(deptno) = 1 then 'Total'
 11            else to_char(deptno)
 12          end d,
 13          deptno,
 14          sum(sal) ssal
 15    from  e
 16    group by grouping sets ((deptno),())
 17  /

D         DEPTNO       SSAL
----- ---------- ----------
10            10       8750
20            20      10875
30            30      10400
40            40
Total                 30025

SQL> 


SY.
14 сен 18, 15:57    [21674874]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
XMLer
Member

Откуда:
Сообщений: 237
SY
XMLer
sanzhar333,
совсем примитивно и на русском


Не все так просто. У него in-line view ....

SY.


Соломон, прости пожалуйста, но ты всерьез считаешь что я буду читать его неотформатированный код? Дальше первой строчки я не читал да и не собираюсь. Но! для того чтобы добавить итоги есть Olap аналитика.
14 сен 18, 16:05    [21674879]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
Zahar H.
Member

Откуда: New York
Сообщений: 14
SY,

In the top query, FULL JOIN is slightly more appropriate than "right join" (on the line 13)


P.S. Apparently, ROLLUP will produce the same result
14 сен 18, 16:34    [21674913]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9054
Zahar H.
SY,

In the top query, FULL JOIN is slightly more appropriate than "right join" (on the line 13)


Да ну? Смотрим на:

on t1.TO_DEP_NAME = t2.id


и мeдитируем над результатом right join и full join если t1.TO_DEP_NAME не встречается в t2.

SY.
14 сен 18, 17:36    [21674974]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
XMLer
Member

Откуда:
Сообщений: 237
SY
Да ну? Смотрим на:

и мeдитируем над результатом

SY.

А разве это должен делать еще кто-то кроме ТС?
14 сен 18, 17:47    [21674988]     Ответить | Цитировать Сообщить модератору
 Re: Итоги в конце таблицы  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9054
XMLer
А разве это должен делать еще кто-то кроме ТС?


Тот кто советует как минимум должен сказать что если не существует t1.TO_DEP_NAME которого нет в t2 то тогда можно заменить right join на full join. Иначе уровня TC может и не хватить чтобы это понять. А вот потом никто кроме ТС не решит а может ли в будущем такое произойти и стоит ли овчинка выделки.

SY.
14 сен 18, 18:15    [21675004]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить