【问题标题】:MySQL query to subtract two groups of valuesMySQL查询减去两组值
【发布时间】:2014-09-02 23:40:33
【问题描述】:

我有一个“发票明细”表,我想得到net_sales 的商品#,这可以通过从退货中减去销售额来实现。

问题是:我可以通过得到 type = 'S' 的 SUM(qty) 和 type = 'R' 的 SUM(qty) 来做一个查询,然后减去他们获取该项目的 net_sales#?还有如果有不止一件物品# 要获得 net_sales?

+------+------+------+
| Item |  Qty | Type |
+------+------+------+
| 1132 |  1   |  S   |
| 1132 |  2   |  S   |
| 1132 |  3   |  R   |
+------+------+------+

我所做的是在查询中选择第一组“S”,然后在另一个查询中选择第二组“R”,然后减去它们,如果有很多项目要处理,这会导致性能不足!

【问题讨论】:

    标签: mysql performance return subtraction


    【解决方案1】:

    这变得很容易,如果你用不同的方式表达问题:而不是SUM()ing all S,然后减去所有R 的总和,你也可以计算所有项目的总和,R作为否定的标记:

    SELECT
      `Item`,
      SUM(IF(`Type`='S', `Qty`, -1*`Qty`)) AS total
    FROM
      `invoice_details`
    WHERE
      -- your criteria here, e.g.
      `Item`=1132
    GROUP BY `Item`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 2013-01-02
      • 2019-11-20
      • 2021-02-03
      • 2023-01-15
      • 1970-01-01
      相关资源
      最近更新 更多