【发布时间】:2021-01-13 23:26:30
【问题描述】:
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
【问题讨论】:
-
好吧,你的 DBMS 是什么? SQL 只是一种查询语言,每个 DBMS 都有自己的方言。你能说出 ORDERNET 列计算的确切逻辑是什么吗?
-
您的 SQL 出了什么问题 - 它返回的 Order 的数据以 100 或 200 开头。只需将其替换为 300 -
(od.prodcode like '300-%')。您能否为“基于特定内容的总和”添加更多详细信息 -
对不起,我会解释得更好一点。例如,订单 1000 可以包含产品 100-A、100-B 和 100-C,但也可以包含 300-A 等。我只想对每个订单以 100 或 200 开头的产品求和。
-
该查询为您提供一切,除此之外,您只需要
ORDERNET,它为您提供每个ORDERNO的总和。我说的对吗? -
@Sujitmohanty30,没错
标签: sql select group-by sum sql-order-by