根据特定内容汇总表

时间:2020-09-28 11:18:27

标签: sql select group-by sum sql-order-by

select
om.orderno,
od.product,
od.preorderqty,
(od.preorderqty * od.nto) as preordernet
from OrderMaster om
join OrderDetail od on od.orderid = om.id
and ((od.prodcode like '100-%') or (od.prodcode like '200-%'))
order by om.orderno,sod.prodcode

当前结果:

ORDERNO PRODUCT PREORDERQTY PREORDERNET 
1000    100-A   2           200
1000    100-B   2           300
1000    100-C   1           450
2000    100-A   3           300
2000    100-B   1           150
2000    200-A   2           900
3000    200-A   1           450

我需要帮助来获取一个脚本,该脚本:

  • 根据特定内容汇总订单
  • 订单可以包含以300等开头的产品。

预期结果:

ORDERNO PRODUCT PREORDERQTY PREORDERNET ORDERNET
1000    100-A   2           200         950
1000    100-B   2           300         950
1000    100-C   1           450         950
2000    100-A   3           300         1350
2000    100-B   1           150         1350    
2000    200-A   2           900         1350
3000    200-A   1           450         450

1 个答案:

答案 0 :(得分:0)

根据我的预期输出,请使用sum作为窗口函数来获取它,

select om.orderno
      ,od.product
      ,od.preorderqty
      ,(od.preorderqty * od.nto) as preordernet
      ,sum(od.preorderqty * od.nto) over (partition by om.orderno) as ordernet
  from OrderMaster om
  join OrderDetail od 
    on od.orderid = om.id
     and ((od.prodcode like '100-%') 
       or (od.prodcode like '200-%'))
order by om.orderno,sod.prodcode