【问题标题】:SQL Join table with calculated fields带有计算字段的 SQL 连接表
【发布时间】:2017-10-29 16:07:45
【问题描述】:

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

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

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

如果库存量为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

当前输出:

【问题讨论】:

  • 没有样本数据,我至少不知道你在说什么。
  • 稍微更新一下
  • 我想要一个额外的列来计算您可以发送给客户的数量。第 1 行将是 2 第 2 行将是 3 第 3 行将是 1(因为这些有足够的库存)
  • 你有多少这样的条件?
  • 阅读 mysql case 语句并包含所有条件。 dev.mysql.com/doc/refman/5.7/en/case.html

标签: mysql sql join calculated-columns


【解决方案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

【讨论】:

  • 它不检查是否有足够的库存来发送它,这是我的主要问题!!!
  • 如果有 5 个库存但我需要发送 10 个,那么结果应该是 5,因为只有 5 个可用。
  • 如果你再读它,它在里面吗?不过非常感谢,这正是我想要的。
猜你喜欢
  • 2016-02-25
  • 1970-01-01
  • 2016-09-05
  • 2019-04-19
  • 2021-12-18
  • 2011-10-25
  • 1970-01-01
  • 2013-11-15
  • 2018-11-14
相关资源
最近更新 更多