SQL连接表与计算字段

时间:2017-10-29 16:07:45

标签: mysql sql join calculated-columns

我想在此查询中添加另一列,以显示需要处理的延期交货。

目前,该表显示了所有包含未清项目的订单以及每个库存参考的库存量。

我想为建议的发票金额添加一个字段。 即如果订单数量为5,则发票数量为2,库存数量为2,则建议交货2。

如果instock数量为100则建议交付3。

我目前的尝试如下,但我不知道如何做最后一点。

我知道我需要这么做(qtyOrdered-qtyinvoiced),但确实打了一堵砖墙。

SELECT 
    c.cus_name,
    ol.orderLines_stockRef,
    ol.orderLines_qtyOrdered,
    ol.orderlines_qtyInvoiced,
    pr.products_instock
FROM
    cus c
        JOIN
    orderheader oh ON oh.orderHeader_customer = c.cus_id
        JOIN
    orderlines ol ON ol.orderLines_orderId = oh.orderHeader_id
        JOIN
    products pr ON ol.orderlines_stockref = pr.products_reference
WHERE
    ol.orderLines_qtyOrdered <> ol.orderlines_qtyInvoiced

当前输出:

Output

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT 
    c.cus_name,
    ol.orderLines_stockRef,
    ol.orderLines_qtyOrdered,
    ol.orderlines_qtyInvoiced,
    pr.products_instock,
    (CASE WHEN ol.orderLines_qtyOrdered - ol.orderlines_qtyInvoiced > pr.products_instock
          THEN pr.products_instock
          ELSE ol.orderLines_qtyOrdered - ol.orderlines_qtyInvoiced) AS qtyToSend,
FROM
    cus c
        JOIN
    orderheader oh ON oh.orderHeader_customer = c.cus_id
        JOIN
    orderlines ol ON ol.orderLines_orderId = oh.orderHeader_id
        JOIN
    products pr ON ol.orderlines_stockref = pr.products_reference
WHERE
    ol.orderLines_qtyOrdered <> ol.orderlines_qtyInvoiced