如何从现有行重新分配金额

1bqhqjot  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(310)

尝试使用销售订单记录创建数据库,并根据某些规则在具有不同值的销售订单行项目之间重新分配总交易价格。
例如,如果我有一个100美元的销售订单,其中有两行是由软件和维护组成的,假设软件的合同价格是100美元,维护是免费的。如果我从软件到维护分配50美元,那么他们每行都有50美元的分配值,那么最好的方法是什么?
我正在考虑添加另一个列/字段,在该列/字段中,我们保留每个销售订单的原始金额,但尝试查看如何应用某个规则(例如比较的较高值),并将销售订单的总价值分配到与合同金额不同的金额中。
请注意,我正在尝试计算分配的金额,因为在创建销售订单数据时,分配的金额最初将为空。
谢谢大家

ldioqlga

ldioqlga1#

它取决于您的数据库,也取决于您的“特定规则”,但为了让您开始使用,下面的内容将在SQLServer和其他可能的应用程序中工作。
要将销售订单(so)的所有收入平均分摊到该销售订单的所有行(行),请执行以下操作:

update tbl
set Alloc = new_alloc
from
(select 
   so, 
   line, 
   (sum(contracted) over (partition by so))/
     (count(line) over (partition by so)) as new_alloc
 from tbl) as sub
 where sub.so = tbl.so
   and sub.line = tbl.lineenter code here

要根据行描述应用自定义规则(在本例中,80%为“软件”,20%为“维护”):

update tbl
set Alloc = new_alloc
from
(select 
   so, 
   line, 
   case when line_description = 'Software' then 0.8 
        when line_description = 'Maintenance' then 0.2 
        end *
     sum(contracted) over (partition by so) as new_alloc
 from tbl) as sub
 where sub.so = tbl.so
   and sub.line = tbl.line

sql小提琴

相关问题