【问题标题】:MySQL subtract from SUM in CASE statementMySQL 从 CASE 语句中的 SUM 中减去
【发布时间】:2017-05-11 03:15:20
【问题描述】:

我有一个 SQL 代码。

SELECT DISTINCT SQL_CALC_FOUND_ROWS 
                 sales.code as code,
                 SUM(CASE WHEN sales.type = 51 THEN sales.amount ELSE 0 END) AS amount,
                 sales.type as type
              FROM sales

现在的问题是,如果 sales.type != 51 AND sales.amount > 0,我需要从总 SUM 中减去 sales.amount。我该怎么做?我想我需要在 ELSE 语句之后的第一个 CASE 语句中添加另一个 CASE 语句,但我不知道它是如何工作的。

例如,如果类型不是 51,并且 sales.amount 大于 0,那么我应该从金额中减去它。

谢谢。

【问题讨论】:

    标签: mysql sql sum subtraction


    【解决方案1】:

    select distinct 来自哪里?使用GROUP BY

    SELECT s.code as code,
           SUM(CASE WHEN s.type = 51 THEN s.amount ELSE 0 END) AS amount
    FROM sales s
    GROUP BY s.code;
    

    那么你的问题的答案是改变ELSE子句:

    SELECT s.code as code,
           SUM(CASE WHEN s.type = 51 THEN s.amount ELSE - s.amount
               END) AS amount
    FROM sales s
    GROUP BY s.code;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 2013-02-22
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多