订单编号和收入的输出,其中与订单编号关联的所有采购订单编号已发货或已准备好发货

时间:2014-03-15 20:36:12

标签: mysql sql

我是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

我确信这可能很简单,但我无法理解。请帮忙。

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

1 个答案:

答案 0 :(得分:0)

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

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)