Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Итоги в конце таблицы / 13 сообщений из 13, страница 1 из 1
14.09.2018, 13:55
    #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
14.09.2018, 13:59
    #39702663
sanzhar333
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итоги в конце таблицы
Пробовал через UNION,но никак не получается
...
Рейтинг: 0 / 0
14.09.2018, 14:01
    #39702666
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итоги в конце таблицы
...
Рейтинг: 0 / 0
14.09.2018, 14:09
    #39702670
sanzhar333
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итоги в конце таблицы
XMLer,там ничего не понятно
...
Рейтинг: 0 / 0
14.09.2018, 15:34
    #39702729
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итоги в конце таблицы
...
Рейтинг: 0 / 0
14.09.2018, 15:45
    #39702735
SY
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
14.09.2018, 15:46
    #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
14.09.2018, 15:57
    #39702744
SY
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
14.09.2018, 16:05
    #39702747
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Итоги в конце таблицы
SYXMLersanzhar333,
совсем примитивно и на русском

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

SY.

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

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

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

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

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


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