Oracle 第二列中的运行总计-跟进
这是我上一篇文章的后续文章 我现在拥有的数据集是这样的Oracle 第二列中的运行总计-跟进,oracle,Oracle,这是我上一篇文章的后续文章 我现在拥有的数据集是这样的 PART_NO ORDER_NO OPERATION_NO LOT_SIZE REPORTED_QTY QTY_BALANCE 305002 10374 10 3000 2417 305002 10374 11 3000 2417 305002 10374 12
PART_NO ORDER_NO OPERATION_NO LOT_SIZE REPORTED_QTY QTY_BALANCE
305002 10374 10 3000 2417
305002 10374 11 3000 2417
305002 10374 12 3000 2417
305002 10374 13 3000 2417
305002 10374 14 3000 2417
305002 10374 15 3000 2417
305002 9145 10 2000 1950
305002 9145 20 2000 1949
305002 9145 30 2000 1949
305002 9145 40 2000 1949
305002 9145 50 2000 1949
305002 9145 60 2000 1949
当我使用滞后函数时,我得到如下结果
PART_NO ORDER_NO OPERATION_NO LOT_SIZE REPORTED_QTY QTY_BALANCE
305002 10374 10 3000 2417 583
305002 10374 11 3000 2417 0
305002 10374 12 3000 2417 0
305002 10374 13 3000 2417 0
305002 10374 14 3000 2417 0
305002 10374 15 3000 2417 0
305002 9145 10 2000 1950 467
305002 9145 20 2000 1949 1
305002 9145 30 2000 1949 0
305002 9145 40 2000 1949 0
305002 9145 50 2000 1949 0
305002 9145 60 2000 1949 0
问题是,当订单号改变时,我需要从头开始对该订单号进行滞后评估
PART_NO ORDER_NO OPERATION_NO LOT_SIZE REPORTED_QTY QTY_BALANCE
305002 10374 10 3000 2417 583
305002 10374 11 3000 2417 0
305002 10374 12 3000 2417 0
305002 10374 13 3000 2417 0
305002 10374 14 3000 2417 0
305002 10374 15 3000 2417 0
305002 9145 10 2000 1950 50
305002 9145 20 2000 1949 1
305002 9145 30 2000 1949 0
305002 9145 40 2000 1949 0
305002 9145 50 2000 1949 0
305002 9145 60 2000 1949 0
我似乎绕不开这件事。如何使滞后函数理解,只要顺序没有改变,它就需要重置 在
OVER
声明中使用partitionbyorder\u no
子句:
SELECT PART_NO, ORDER_NO, OPERATION_NO, Lot_Size,
Reported_QTY,
COALESCE( LAG( Reported_QTY ) OVER (PARTITION BY ORDER_NO ORDER BY null )
- Reported_QTY, Lot_Size - Reported_QTY ) AS Qty_Balance
FROM Lots
ORDER BY ORDER_NO DESC, OPERATION_NO
演示: