首页 > 解决方案 > 需要滚动父数量来计算总量

问题描述

提前感谢您提供的任何帮助。我已经花了几个小时没有运气。

我正在使用一个缩进的物料清单表,它有一个末端零件 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

标签: sqloracleoracle10gparent-child

解决方案


推荐阅读