Заранее благодарим за любую помощь, которую вы можете оказать.Я потратил на это часы безуспешно.
Я работаю с таблицей с отступами, у которой есть идентификатор конечной части, порядковый номер, уровень и количество.Цель состоит в том, чтобы определить суммарное суммарное количество каждой строки в этой таблице.
Что затрудняет то, что для определения общего количества дочернее количество необходимо умножить на его родительское количество.Родительское количество этого родителя должно быть умножено на его родительское количество и т. Д.
Например, часть уровня 3 имеет количество компонента 5. Это родительская часть уровня 2 имеет количество компонента 2Родитель, часть уровня 1 имеет количество компонента 3. Это означает, что общее количество части уровня 3 равно 30 (3 X 2 X 5).
С помощью SO (в частности, @KKK) родительское количество было рассчитано в следующем запросе.После того, как это было решено, я понял, что теперь мне нужны два дополнительных столбца, один из которых отображает скрученные / накопленные количества родительских строк, а другой - общее количество дочерних элементов.
Прикрепленный снимок экрана содержит два столбца, которыедолжны быть добавлены выделены желтым цветом.Вот текущий SQL (с использованием Oracle 10.2) для столбцов, которые не выделены желтым цветом:
select
end_part_id, sort_seq_no, indented_lvl, comp_qty,
(select distinct first_value(a.comp_qty) over (order by a.sort_seq_no desc, TRIM(a.indented_lvl) desc)
from
report_table a
where
a.end_part_id = b.end_part_id
and a.sort_seq_no < b.sort_seq_no
and TRIM(a.indented_lvl) < TRIM(b.indented_lvl)) as "PARENT_QTY"
from report_table b
Ожидаемые результаты
END_PART_ID SORT_SEQ_NO INDENTED_LVL COMP_QTY PARENT_QTY ROLLED_PARENT QTY TOTAL_QTY
PARTX 1 1 2 1 1 2
PARTX 2 2 5 2 2 10
PARTX 3 3 2 5 10 20
PARTX 4 4 1 2 20 20
PARTX 5 5 1 1 20 20
PARTX 6 6 1 1 20 20
PARTX 7 5 4 1 20 80
PARTX 8 6 1 4 80 80
PARTX 9 2 7 2 2 14
PARTX 10 3 2 7 14 28
PARTX 11 3 2 7 14 28
PARTX 12 4 1 2 28 28
PARTX 13 4 1 2 28 28
PARTX 14 3 8 7 14 112
PARTX 15 1 1 1 1 1
PARTX 16 2 7 1 1 7
PARTX 17 3 2 7 7 14
PARTX 18 3 2 7 7 14
PARTX 19 4 1 2 14 14
PARTX 20 4 1 2 14 14