MySQL 在 CASE 语句中从 SUM 中减去

MySQL subtract from SUM in CASE statement

我有一个 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,我需要从总和中减去 sales.amount。我该怎么做?我想我需要在第一个 ELSE 语句之后的另一个 CASE 语句,但我不知道它是如何工作的。

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

谢谢。

这个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;