sql根据百分比分配值

时间:2017-03-17 16:19:02

标签: sql

假设我有一个包含产品和收入的数据库。我知道,对于产品' Apple',我们有很多种类的应用程序,大约70%的销售额是奶奶史密斯,30%是金色的美味。

select
        delivery_month_id,
        sales_order_id,
        product_id,
        product_nm,
        net_cost_distributed_amt,
from dw.op_sales_order    
where delivery_month_id >= 201601

我现在拥有的是什么 enter image description here

我试图得到这样的东西 enter image description here

我假设我需要一些案例和子查询但不完全确定如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

您需要一个包含产品详细信息的表(或类似的行源,例如WITH子句)。称之为DW.PRODUCT_DETAILS。它应该有三列:PRODUCT_DETAIL_IDPRODUCT_NMALLOCATION_PCT,其中PRODUCT_NMOP_SALES_ORDER表中显示的名称。

然后,您可以将此表连接到您的查询中以获得所需的结果:

SELECT so.delivery_month_id,
       so.sales_order_id,
       so.product_id,
       so.product_nm,
       so.net_cost_distributed_amt,
       so.net_cost_distributed_amt * NVL (pd.allocation_pct,1) rev_revised
FROM   dw.op_sales_order so 
       LEFT JOIN dw.product_details pd ON pd.product_nm = so.product_nm
WHERE  so.delivery_month_id >= 201601

使用左连接,橙子和葡萄柚等没有任何细节的东西不需要在PRODUCT_DETAILS表中。