首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取列和并将其用于分发值。

获取列和并将其用于分发值。
EN

Stack Overflow用户
提问于 2020-02-19 09:39:15
回答 2查看 46关注 0票数 0

我有两张桌子,sales_order和sales_order_line。

sales_order_line表包含事务级事务的详细信息,sales_order表包含事务级别的详细信息。我加入了这两个表,并意识到折扣值处于事务级别。当顾客购买超过1件商品时,我需要根据商品价格来分配折扣的价值,而当客户只购买1件商品时,折扣值只是按原样应用。桌子看起来像这样。

sales_order

代码语言:javascript
复制
ID   | PLATFORM_ORDER_CODE | OMS_ORDER_CODE | DISCOUNT_TOTAL
0001          19000001         nebula0001         300000
0002          19000001         nebula0002         300000
0003          19000001         nebula0003         300000
0004          19000002         nebula0004         100000
0005          19000002         nebula0005         100000
0006          19000003         nebula0006          50000

sales_order_line

代码语言:javascript
复制
SALES_ORDER_ID | PLATFORM_ORDER_CODE | SKU_CODE | UNIT_PRICE
0001                   19000001        SKUA0001     200000
0002                   19000001        SKUA0002     100000
0003                   19000001        SKUA0003     300000
0004                   19000002        SKUA0001     200000
0005                   19000002        SKUA0002     100000
0006                   19000003        SKUA0001     200000

这是我在DB Fiddle上的尝试,我需要这样的结果

代码语言:javascript
复制
PLATFORM_ORDER_CODE | OMS_ORDER_CODE | SKU_CODE | UNIT_PRICE | DISCOUNT
19000001                 nebula0001    SKUA0001     200000      100000
19000001                 nebula0002    SKUA0002     100000      50000
19000001                 nebula0003    SKUA0003     300000      150000
19000002                 nebula0004    SKUA0001     200000      66666.6666
19000002                 nebula0005    SKUA0002     100000      33333.3333
19000003                 nebula0006    SKUA0001     200000      50000
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-19 09:50:57

代码语言:javascript
复制
SELECT B.PLATFORM_ORDER_CODE, 
       A.OMS_ORDER_CODE, 
       B.SKU_CODE, 
       B.UNIT_PRICE, 
       A.DISCOUNT_TOTAL/C.TOTAL_PRICE*B.UNIT_PRICE DISCOUNT
FROM t_td_sales_order A
JOIN t_td_sales_order_line B ON B.SALES_ORDER_ID = A.ID
JOIN ( SELECT PLATFORM_ORDER_CODE, SUM(UNIT_PRICE) TOTAL_PRICE
       FROM t_td_sales_order_line
       GROUP BY PLATFORM_ORDER_CODE ) C ON B.PLATFORM_ORDER_CODE = C.PLATFORM_ORDER_CODE

小提琴

票数 1
EN

Stack Overflow用户

发布于 2020-02-19 09:53:31

如果您运行的是MySQL 8.0,您可以使用窗口函数:

代码语言:javascript
复制
select 
    o.platform_order_code,
    o.oms_order_code,
    l.sku_code,
    l.unit_price,
    o.discount_total 
        * l.unit_price 
        / sum(l.unit_price) over(partition by o.platform_order_code) discount
from sales_order o
inner join sales_order_line l on l.sales_order_id  = o.id

计算订单行折扣的逻辑是计算当前订单行unit_price与当前platform_order_code总价格的比率,然后将其应用于订单折扣。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60297149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档