计算前一行值和当前行值之间的累积差值
这与生产有关。qty_needed和qty_onhand是在数据库中获取的给定值。我想用累积差异结果替换qty_onhand中显示的值,因为它是一个连接查询,所以会重复显示。希望你能帮我处理这件事。
样品运行显示数据。
qty_needed qty_onhand
5 10
5 10
5 10
要获取remaining_onhand列,这里是示例。
qty_onhand的初始值= 10。
公式:所需数量-现有数量
qty_needed qty_onhand
5 10
5 10-5 = 5
5 5-5 = 0
SAMPLE SCRIPT:
CASE
WHEN ROW_NUMBER ()
OVER (PARTITION BY component
ORDER BY partno) =
1
THEN
qty_on_hand
WHEN qty_on_hand - SUM (qty_needed)
OVER (PARTITION BY component ORDER BY partno ROWS UNBOUNDED PRECEDING) <= 0
THEN
0
ELSE
qty_on_hand - SUM (qty_needed)
OVER (PARTITION BY component ORDER BY partno ROWS UNBOUNDED PRECEDING)
END AS testQtyNeeded
2条答案
按热度按时间zengzsys1#
对于可重复的结果,您需要一些一致的逻辑来对行进行排序。这里我使用
over(order by 1)
分配了一个行号,它不能保证完全匹配行插入的顺序,但通常与此接近。理想情况下,你会有一些其他列(一些日期也许?),可以使用。然后假设你想弄清楚什么时候重新排序,这种方法可能会有所帮助:fiddle
注:通常也会有一些关于再订购水平的可用数据,但是如果这样的数据存在,则可以将其引入到上面看到的情况表达式中。
gijlo24d2#
您可以使用Sum()OVER()分析函数来计算所需数量的运行总和。
。。。用你的样本数据
...结果如下:
注意:(Partition By 1 Order By 1) 应根据您的需要进行调整。您可能有一些东西可以用来对行进行分区和排序。