sql - 需要滚动父数量来计算总量
问题描述
提前感谢您提供的任何帮助。我已经花了几个小时没有运气。
我正在使用一个缩进的物料清单表,它有一个末端零件 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
解决方案
推荐阅读
- postgresql - 在文本中执行多个替换的更好功能,由数组指定?
- python - 在文本文件中查找和替换正则表达式(mac 地址)
- python - import pyzbar.pyzbar - 找不到 zbar 共享库
- node.js - 如何在 node express 中同时使变量在路由和模板中可用?
- sql - 分配上的 SQL 连接问题
- python - 如何从python中列表的特定索引开始循环?
- javascript - 有没有办法为制表器中的列标题获取鼠标悬停事件?
- javascript - Discord.js 为什么我的帮助命令不起作用?
- python - 如何将python文本字符串转换为List?
- go - 什么是正确的 ZMQ 模式?