0

我有下表,其中我有两个销售订单,每个销售订单都有不同数量的交易。

销售订单 交易 数量 送货费 TotalTax(包括运费税)
S1 T1 12 0 3 5.5(这也包括第 4 栏中的税)
S1 T2 27 4 3 5.5
S2 T1 15 2.5 5 6
S2 T2 10 2 5 6

在每个 SaleOrder 中,我有不同数量的交易,并且每笔交易在金额栏中有不同的发票金额加上税款栏中每笔交易的税款。

在销售订单 1 中,我收取了 6 的运费,除以交易数量,每笔交易得到 3。销售订单 2 的情况类似,总运费为 10。

现在在 TotalTax 列中,我重复地获得了运费和交易税的总和。

如何在 SQL Server 中创建具有单独运费税的列,如下所示:

销售订单 交易 数量 送货费 总税 运费税
S1 T1 12 0 3 5.5 0.75
S1 T2 27 4 3 5.5 0.75
S2 T1 15 2.5 5 7 1.25
S2 T2 10 2 5 7 1.25

考虑 SaleOrder 1,其中交易税 (0 + 4) 和交货税 (1.5) 等于 5.5,它针对每笔交易进行过帐。我不需要 TotalTax 列,但我需要将 1.5 从中分离出来,然后除以每笔交易,得到 0.75。

同样在 SaleOrder 2 中,交易税 (2 + 2.5) 和交货税 (2.5) 等于 7,并且针对每笔交易进行过帐。我需要将 2.5 从中分离出来,并针对每笔交易进行划分,从而得到 1.75。

有人可以帮我吗?

4

1 回答 1

0

您需要从 中减去税收列的总和,total_tax然后除以交易次数。使用窗口函数:

select t.*,
       (total_tax - sum(tax) over (partition by SaleOrder)) * 1.0 / count(*) over (partition by SaleOrder) as DeliveryChargeTax
from t;

是一个 db<>fiddle。

于 2020-12-30T12:38:20.347 回答