提前感谢您提供的任何帮助。我花了好几个小时没有运气。
我正在使用缩进的物料清单表,其中包含结束部件ID,序列号,级别和数量。目标是确定此表中每行的累计总量。
使这一点变得困难的是,要确定总数量,需要将子数量乘以其父数量。该父母的父母数量需要乘以父母的数量,依此类推。
例如,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