powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Итоги в конце таблицы
13 сообщений из 13, страница 1 из 1
Итоги в конце таблицы
    #39702654
sanzhar333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые форумчане есть такой запрос и результат.мне нужно в конце(в самом низу) данной таблицы ИТОГИ(суммы) по столбцам.
Помогите как быть?
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)
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702663
sanzhar333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал через UNION,но никак не получается
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702666
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702670
sanzhar333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XMLer,там ничего не понятно
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702729
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702735
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLersanzhar333,
совсем примитивно и на русском

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

SY.
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702736
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanzhar333,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  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
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702744
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
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.
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702747
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYXMLersanzhar333,
совсем примитивно и на русском

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

SY.

Соломон, прости пожалуйста, но ты всерьез считаешь что я буду читать его неотформатированный код? Дальше первой строчки я не читал да и не собираюсь. Но! для того чтобы добавить итоги есть Olap аналитика.
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702770
Zahar H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702801
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zahar H.SY,

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


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

Код: plsql
1.
on t1.TO_DEP_NAME = t2.id



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

SY.
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702808
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYДа ну? Смотрим на:

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

SY.
А разве это должен делать еще кто-то кроме ТС?
...
Рейтинг: 0 / 0
Итоги в конце таблицы
    #39702817
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerА разве это должен делать еще кто-то кроме ТС?

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

SY.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Итоги в конце таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]