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;
我有一个 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;