powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Агрегация сумм в иерархических запросах
25 сообщений из 63, страница 2 из 3
Агрегация сумм в иерархических запросах
    #36728529
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LGРезультат не верный :)А тестовые данные и ожидаемый результат? Или просто ткнуть носом в ошибку?
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36728559
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select 
   min(id) keep(dense_rank first order by l) id,
   min(description) keep(dense_rank first order by l) description,
   sum(amount)
from (
     select level l, id, parent_id, description, amount, 
     sys_connect_by_path(id,'/') p,
     substr(sys_connect_by_path(id,'/'),  1 ) p1,
     substr(sys_connect_by_path(id,'/'),  2 ) p2,
     substr(sys_connect_by_path(id,'/'),  3 ) p3,
     substr(sys_connect_by_path(id,'/'),  4 ) p4,
     substr(sys_connect_by_path(id,'/'),  5 ) p5 
   from t
   start with parent_id is null
   connect by prior id = parent_id
) tt
group by p1, rollup(p2,p3,p4,p5)
having grouping_id(p2, p3, p4, p5) = power( 2 ,  5 -min(l))- 1 
результат
Код: plaintext
1.
2.
3.
4.
5.
6.
   	ID	DESCRIPTION	SUM(AMOUNT)
	 1 	Top	 10 
	 2 	Top-One	 100 
	 5 	Top-Two	 1000 
	 3 	One-one	 2000 
	 4 	One-two	 3000 
	 6 	One-three	 300 
должно быть
Код: plaintext
1.
2.
3.
4.
5.
	 1 	Top	 10 	 6410 
	 2 	Top-One	 100 	 5400 
	 5 	Top-Two	 1000 	 1000 
	 4 	One-two	 3000 	 3300 
	 4 	One-three	 300 	 3300 
	 3 	One-one	 2000 	 2000 
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36728574
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LG,
Сорри, забыл
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
with t as ( 
   select  1  id, null parent_id, 'Top' description,  10  amount from dual union all
   select  2  id,  1  parent_id, 'Top-One' description,  100  amount from dual union all
   select  3  id,  2  parent_id, 'One-one' description,  2000  amount from dual union all
   select  4  id,  2  parent_id, 'One-two' description,  3000  amount from dual union all
   select  5  id,  1  parent_id, 'Top-Two' description,  1000  amount from dual union all
   select  6  id,  2  parent_id, 'One-three' description,  300  amount from dual 
)
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36728622
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LG,

substr не тоже самое, что subword. Смысл p1..p5 - деревянный unpivot. Там должны получиться айдишники соответствующей глубины.
Код: plaintext
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.
SQL> with t as (
   select  1  id, null parent_id, 'Top' description,  10  amount from dual union all
   3      select  2  id,  1  parent_id, 'Top-One' description,  100  amount from dual union all
   select  33  id,  2  parent_id, 'One-one' description,  2000  amount from dual union all
   5      select  4  id,  2  parent_id, 'One-two' description,  3000  amount from dual union all
   select  5  id,  1  parent_id, 'Top-Two' description,  1000  amount from dual union all
   select  6  id,  2  parent_id, 'One-three' description,  300  amount from dual
   union all select  66  id,  6  parent_id, 'Tree-three' description,  3  amount from dual
   union all select  666  id,  66  parent_id, 'Tree-three' description,  0 . 3  amount from dual
)
  11   select 
  12      min(id) keep(dense_rank first order by l) id,
   min(description) keep(dense_rank first order by l) description,
   sum(amount),
  15      p1, p2, p3, p4, p5, grouping_id(p2, p3, p4, p5) grp, power( 2 ,  5 -min(l))- 1  pwr
  16   from (
  17        select level l, id, parent_id, description, amount,
     sys_connect_by_path(id,'/') p,
     std.subword(sys_connect_by_path(id,'/'),  1 ) p1,
  20        std.subword(sys_connect_by_path(id,'/'),  2 ) p2,
  21        std.subword(sys_connect_by_path(id,'/'),  3 ) p3,
  22        std.subword(sys_connect_by_path(id,'/'),  4 ) p4,
     std.subword(sys_connect_by_path(id,'/'),  5 ) p5 --максимальная глубина хиерархии
  24      from t
  25      start with parent_id is null
   connect by prior id = parent_id
  27   ) tt
  28   group by p1, rollup(p2,p3,p4,p5)
having grouping_id(p2, p3, p4, p5) = power( 2 ,  5 -min(l))- 1 
order by p1 nulls first, p2 nulls first, p3 nulls first, p4 nulls first, p5 nulls first
  31   ;

        ID DESCRIPTION                    SUM(AMOUNT) P1    P2    P3    P4    P5           GRP        PWR
---------- ------------------------------ ----------- ----- ----- ----- ----- ----- ---------- ----------
          1  Top                                  6413 , 3   1                                       15           15 
          2  Top-One                              5403 , 3   1       2                                  7            7 
         33  One-one                                2000   1       2       33                           3            3 
          4  One-two                                3000   1       2       4                            3            3 
          6  One-three                             303 , 3   1       2       6                            3            3 
         66  Tree-three                              3 , 3   1       2       6       66                     1            1 
        666  Tree-three                              , 3   1       2       6       66      666              0            0 
          5  Top-Two                                1000   1       5                                  7            7 

...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36728661
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,
А ...
Ясно ...
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36729046
wildwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chameleon82,

Можно построить транзитивное замыкание на иерархии. Тогда агрегирующие (и некоторые другие) запросы сильно упростятся. Но есть недостаток - его нужно поддерживать. Если иерархия меняется нечасто, это обычно не проблема.
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36729088
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wildwindЕсли иерархия меняется нечасто
и при этом иерархия не слишком глубока, то еще проще заменить иерархию классификатором.
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36729132
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
column description format a20
with t as (
           select  1  id, null parent_id, 'Top' description,  10  amount from dual union all
           select  2  id,  1  parent_id, 'Top-One' description,  100  amount from dual union all
           select  3  id,  2  parent_id, 'One-one' description,  2000  amount from dual union all
           select  4  id,  2  parent_id, 'One-two' description,  3000  amount from dual union all
           select  5  id,  1  parent_id, 'Top-Two' description,  1000  amount from dual union all
           select  6  id,  2  parent_id, 'One-three' description,  300  amount from dual
          ),
     h as (
           select  id,
                   lpad(' ',level *  2 ) || description description,
                   amount,
                   sys_connect_by_path(id,'/') || '/' path,
                   rownum rn
             from  t
             start with parent_id is null
             connect by prior id = parent_id
          )
select  h1.id,
        h1.description,
        h1.amount,
        sum(h2.amount) total_amount
  from  h h1,
        h h2
  where instr(h2.path,h1.path) =  1 
  group by h1.id,
           h1.description,
           h1.amount,
           h1.rn,
        h1.amount
  order by h1.rn
/

        ID DESCRIPTION              AMOUNT TOTAL_AMOUNT
---------- -------------------- ---------- ------------
          1    Top                         10           6410 
          2      Top-One                  100           5400 
          3        One-one               2000           2000 
          4        One-two               3000           3000 
          6        One-three              300            300 
          5      Top-Two                 1000           1000 

 6  rows selected.

SQL>  

SY.
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36729149
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
WITH
hr AS
(
SELECT  1  ID, 'Хозяин'                NAME,  0 +NULL id_parent FROM dual UNION ALL
SELECT  2  ID, 'Директор'              NAME,  1       id_parent FROM dual UNION ALL
SELECT  3  ID, 'Главный инженер'       NAME,  2       id_parent FROM dual UNION ALL
SELECT  4  ID, 'Главный бухгалтер'     NAME,  2       id_parent FROM dual UNION ALL
SELECT  5  ID, 'Главный it-специалист' NAME,  4       id_parent FROM dual
),
divs AS
(
SELECT  1  ID,  10000  summa FROM dual UNION ALL
SELECT  2  ID,   1000  summa FROM dual UNION ALL
SELECT  3  ID,    100  summa FROM dual UNION ALL
SELECT  4  ID,    150  summa FROM dual UNION ALL
SELECT  5  ID,     10  summa FROM dual
),
all_relations AS
(
SELECT ID,
       to_number(trim(',' FROM sys_connect_by_path(CASE WHEN LEVEL =  1  THEN ID END, ','))) id_first
  FROM hr
 connect BY PRIOR id_parent = ID
)
SELECT ar.ID, max(hr.NAME) NAME, sum(summa) summa
  FROM all_relations ar,
       divs,
       (
        SELECT ID,
               lpad(' ',LEVEL *  2 ) || NAME NAME
         FROM  hr
         start WITH id_parent IS NULL
         connect BY PRIOR ID = id_parent
       )hr
 WHERE divs.ID = ar.id_first
   AND hr.ID = ar.ID
 GROUP BY ar.ID
idnamesumma11__Хозяин1126022____Директор126034______Главный бухгалтер16045________Главный it-специалист1053______Главный инженер100
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36731115
chameleon82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последнее очень близко к истине :) Потестировал на кошках, too old snapshot`ом пока не пахнет :) Осталось дописать запрос по реальным данным.
Остался неясным вопрос, каким танственным образом выстраивается правильная иерархия, ведь во внешнем запросе нет ни слова об упорядочивании!
пс: а вообще можно ли на иерархическом запросе написать собственную анналитическую функцию, которая бы учитывала иерархию?
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36731135
chameleon82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-, можно ли выложить код функции std.subword? в интернете так и не нашел его (
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36731137
chameleon82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wildwindchameleon82,

Можно построить транзитивное замыкание на иерархии. Тогда агрегирующие (и некоторые другие) запросы сильно упростятся. Но есть недостаток - его нужно поддерживать. Если иерархия меняется нечасто, это обычно не проблема.
можно поподробнее?
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36731174
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chameleon82можно поподробнее?
Транзитивное замыкание бинарного отношения R на множестве X есть наименьшее транзитивное отношение на множестве X, включающее R

Если попроще - то предлагается дополнить табличку
id parent_id2 13 24 2
следующим образом:
1->2->3 => 1,3
1->2->3->4 => 1,4
2->3->4 => 2,4
id parent_id2 13 24 21 31 42 4
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36731194
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chameleon82-2-, можно ли выложить код функции std.subword? в интернете так и не нашел его (Она слишком универсальная и будет излишне для данной задачи греть процессор.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
with t as (
   select '/12/3/456' s from dual
),
w as (
   select level n from dual connect by level <=  5 
)
select n, 
   substr(s, instr(s, '/',  1 , n)+ 1 , instr(s||'/', '/',  1 , n+ 1 )-instr(s, '/',  1 , n)- 1 ) 
from t cross join w;
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36731253
wildwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous следующим образом:
1->2->3 => 1,3
1->2->3->4 => 1,4
2->3->4 => 2,4
+ рефлексивность
1->1
2->2
3->3
4->4

И скорее не дополнить, а создать еще одну.
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36731267
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wildwind
1->1
2->2
3->3
4->4
Это будет анекдот про слона, муху и вечный кайф :)
Ну а если по нашенски - то ORA-01436: CONNECT BY loop in user data
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36731299
wildwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

Поэтому замыкание - отдельно. А иерархия - для иерархических запросов.
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36734953
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На основе решения by Vladimir Sitnikov, которое основывается на граничных суммах, можно предложить более общее и простое:
Код: plaintext
with t AS\n (SELECT id, parent_id, amount, LEVEL l, rownum rn\n    FROM \n (SELECT  1  id, NULL parent_id, \'Top\' description,  10  amount\n    FROM dual\n  UNION ALL\n  SELECT  2  id,  1  parent_id, \'Top-One\' description,  100  amount\n    FROM dual\n  UNION ALL\n  SELECT  3  id,  2  parent_id, \'One-one\' description,  2000  amount\n    FROM dual\n  UNION ALL\n  SELECT  4  id,  2  parent_id, \'One-two\' description,  3000  amount\n    FROM dual\n  UNION ALL\n  SELECT  5  id,  1  parent_id, \'Top-Two\' description,  1000  amount\n    FROM dual\n  UNION ALL\n  SELECT  6  id,  2  parent_id, \'One-three\' description,  300  amount FROM dual)\n   START WITH id =  1 \n  CONNECT BY parent_id = PRIOR id)\nSELECT id,\n       parent_id,\n       amount,\n       SUM(amount) over(ORDER BY rn rows BETWEEN CURRENT ROW AND next_branch - rn -  1  following) summa\n  FROM (SELECT id,\n               parent_id,\n               amount,\n               rn,\n               nvl((SELECT MIN(rn) FROM t sub WHERE sub.l <= t.l AND sub.rn > t.rn),1e10) next_branch\n          FROM t\n         ORDER BY id) t;
Использует для определения окна rows BETWEEN, а не range BETWEEN, но поскольку содержит коррелированный подзапрос - отрабатывает медленнее, зато быстрее многих других предложенных. ;) Кроме того не содержит ограничений на глубину дерева и число непосредственных потомков.
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36735202
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

моё таки круче :))

опробовано на сотнях отчетов в течение 5 лет
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #36736468
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopИспользует для определения окна rows BETWEEN, а не range BETWEEN, но поскольку содержит коррелированный подзапрос - отрабатывает медленнее, зато быстрее многих других предложенных. ;)И гораздо медленнее элементарного при наличии индекса на parent_id (а куда ж без него? :) ).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Агрегация сумм в иерархических запросах
    #37724201
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxdbms_photoshop,

моё таки круче :))

опробовано на сотнях отчетов в течение 5 летОно может и прекрасно работает, если у тебя в таблице с иерархией пару сотен строк. А теперь представь, что в иерархии полмиллиона строк и ты сначала получаешь свои all_relations, а потом соединяешь их с иерахией.
Elicdbms_photoshopИспользует для определения окна rows BETWEEN, а не range BETWEEN, но поскольку содержит коррелированный подзапрос - отрабатывает медленнее, зато быстрее многих других предложенных. ;)И гораздо медленнее элементарного при наличии индекса на parent_id (а куда ж без него? :) ).Не если еще чуток пофантазировать можно обойтись без подзапроса:
Код: plsql
\r\nwith t as\r\n (select id, parent_id, amount, level l, rownum rn\r\n    from \r\n (select 1 id, null parent_id, \'Top\' description, 10 amount\r\n    from dual\r\n  union all\r\n  select 2 id, 1 parent_id, \'Top-One\' description, 100 amount\r\n    from dual\r\n  union all\r\n  select 3 id, 2 parent_id, \'One-one\' description, 2000 amount\r\n    from dual\r\n  union all\r\n  select 4 id, 2 parent_id, \'One-two\' description, 3000 amount\r\n    from dual\r\n  union all\r\n  select 5 id, 1 parent_id, \'Top-Two\' description, 1000 amount\r\n    from dual\r\n  union all\r\n  select 6 id, 2 parent_id, \'One-three\' description, 300 amount from dual)\r\n   start with id = 1\r\n  connect by parent_id = prior id\r\n  order siblings by id)\r\nselect id,\r\n       parent_id,\r\n       amount,\r\n       sum(amount) over(order by rn rows between current row and next_branch - rn - 1 following) summa\r\n  from (select id,\r\n               parent_id,\r\n               amount,\r\n               rn,\r\n               nvl(decode(sign,1,-- nearest node with the same level and greater rn               \r\n                                 min(rn) over (order by l+rn/1e10 range between 1e-38 following and 1 following),\r\n                                 -- next node\r\n                                 rn + 1),1e10) next_branch\r\n          from (select id, parent_id, amount, rn, l, sign(lead(l) over (order by rn) - l) sign from t) t\r\n         order by id) t;\r\n
\r\nВроде должно работать и не такое заковыристое как у Vladimir Sitnikov.
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #37724641
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

предварительно покрутил, и, возможно, не всё ещё понял

добавил одну строку в исходные данные:
Код: 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.
WITH T AS
 (SELECT ID, parent_id, amount, LEVEL l, ROWNUM rn
    FROM 
 (SELECT 1 ID, NULL parent_id, 'Top'   description,   10 amount FROM dual UNION ALL
  SELECT 2 ID, 1 parent_id, 'Top-One'  description,  100 amount FROM dual UNION ALL
  SELECT 3 ID, 2 parent_id, 'One-one'  description, 2000 amount FROM dual UNION ALL
  SELECT 4 ID, 2 parent_id, 'One-two'  description, 3000 amount FROM dual UNION ALL
  SELECT 5 ID, 1 parent_id, 'Top-Two'  description, 1000 amount FROM dual UNION ALL
  SELECT 6 ID, 2 parent_id, 'One-three'description,  300 amount FROM dual UNION ALL
  SELECT 7 ID, 6 parent_id,   '*****'  description,    0 amount FROM dual
 )
   start WITH ID = 1
  connect BY parent_id = PRIOR ID
  ORDER SIBLINGS BY ID)
SELECT ID,
       parent_id,
       amount,
       SUM(amount) OVER(ORDER BY rn ROWS BETWEEN CURRENT ROW AND next_branch - rn - 1 FOLLOWING) summa
  FROM (SELECT ID,
               parent_id,
               amount,
               rn,
               NVL(DECODE(SIGN,1,-- nearest node with the same level and greater rn               
                                 MIN(rn) OVER (ORDER BY l+rn/1e10 RANGE BETWEEN 1E-38 FOLLOWING AND 1 FOLLOWING),
                                 -- next node
                                 rn + 1),1e10) next_branch
          FROM (SELECT ID, parent_id, amount, rn, l, SIGN(lead(l) OVER (ORDER BY rn) - l) SIGN FROM T) T
         ORDER BY ID) T;

получил:IDPARENT_IDAMOUNTSUMMA11064102110054003220002000423000300062300130076005110001000интересует сумма 1300 для строки id=6
так и надо?
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #37724790
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopВроде должно работатьБамбуковый лес:
Код: plsql
1.
2.
3.
    select 1 id, null as parent_id, 1 as amount from dual
    union all
    select level + 1, case when mod(level, 5) = 1 then 1 else level end, 1 from dual connect by level <= 15

Код: plsql
1.
ORA-01428: argument '-5' is out of range
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #37725228
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxинтересует сумма 1300 для строки id=6
так и надо?Нет, это неверно.
Ищу начало следующей ветки по окну с большим rn и тем же уровнем.
А надо искать по окну с большим rn и тем же либо меньшим уровнем.
Вот из-за выделенного возникают проблемы с определением окна.
К сожалению, если в кляузе order by фигурируют два поля, то два RANGE указать нельзя, а было бы забавно. :)
Надо подумать можно ли придумать такой expression и соответствующий range, чтоб искало правильно.
...
Рейтинг: 0 / 0
Агрегация сумм в иерархических запросах
    #37725593
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,
авторОно может и прекрасно работает, если у тебя в таблице с иерархией пару сотен строк. А теперь представь, что в иерархии полмиллиона строк и ты сначала получаешь свои all_relations, а потом соединяешь их с иерахией.

предпочитала подготовить полуфабрикат
--итоги по цех,участок,профессия,месяц, наименование итога, сумма во временную таблицу РАБ1, обычно текстовик для скорости, суммы округляла согласно требованию заказчика
--с РАБ1 уже требуемый отчет с
---------перекрестный, с анализом количества столбиков(обычно до 17 при отчете за год мес-кв-год)
---------условно гладкий типа количество, сумма_без_ндс,ндс, всего с ндс по позициям номенклатуры
--обычно формировала в формате НТМ для удобства просмотра броузером или печати вордом(хотя и екселем приходилось иногда открывать для удобства доводки или очень большим для ворда)
...
Рейтинг: 0 / 0
25 сообщений из 63, страница 2 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Агрегация сумм в иерархических запросах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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