【问题标题】:Output of order numbers and Revenue where all PO numbers tied to the order number has Shipped or is ready to Ship订单号和收入的输出,其中与订单号相关的所有采购订单号都已发货或准备发货
【发布时间】:2014-04-21 04:27:40
【问题描述】:

我是 SQL 新手,我试图获取订单号和收入的输出,其中与订单号相关的所有采购订单号都已发货或准备发货。我的表名为 Orders,如下所示:

PO_NUM | ORDER_NUM |状态 |收入
101 | 001 |生产中 | 1.00
102 | 001 |发货 | 1.00
103 | 001 |发货 | 1.00
104 | 001 |准备发货 | 1.00
201 | 002 |生产中 | 1.00
202 | 002 |生产中 | 1.00
203 | 002 |生产中 | 1.00
301 | 003 |准备发货 | 1.00
401 | 004 |发货 | 1.00
402 | 004 |发货 | 1.00
403 | 004 |发货 | 1.00
501 | 005 |准备发货 | 1.00
502 | 005 |发货 | 1.00
503 | 005 |发货 | 1.00

基于此表的输出将如下所示:

ORDER_NUM |收入
003 | 1.00
004 | 3.00
005 | 3.00

我相信这可能很简单,但我就是想不通。请帮忙。

编辑:如果与订单号相关的所有 PO 编号的状态已发货或准备发货,我只想退回订单号。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    有很多方法可以做到这一点,但这里有一种:

    SELECT ORDER_NUM, REVENUE 
    FROM Orders 
    WHERE PO_NUM IN(
      SELECT TOTALORDERS.PO_NUM 
      FROM
        (SELECT PO_NUM, count(*) as TOTAL 
        FROM Orders 
        GROUP BY PO_NUM) as TOTALORDERS
      INNER JOIN
        (SELECT PO_NUM, count(*) as PROCESSED 
        FROM Orders 
        WHERE [STATUS] IN('Shipped','Ready to Ship') 
        GROUP BY PO_NUM) as PROCESSEDORDERS
      ON TOTALORDERS.PO_NUM=PROCESSEDORDERS.PO_NUM 
        AND TOTALORDERS.TOTAL=PROCESSEDORDERS.PROCESSED)
    

    【讨论】:

    • 这行不通。如果与订单号相关的所有 PO 编号的状态已发货或准备发货,我只想退回订单号。很抱歉不是很清楚。
    • 刚刚有机会运行它。出于某种原因,它仍在返回带有 P.O. 的订单号。仍在生产中的数字。
    • 你可以尝试运行括号内的sql吗?它只是获取每个 PO 的总订单数,然后是每个 PO 处理的数量,然后加入以确保每个 PO 的总订单量等于处理的数量。
    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2022-07-05
    相关资源
    最近更新 更多