CREATE TABLE test
(`id` int, `type` int, `summ` int)
;
INSERT INTO test
(`id`, `type`, `summ`)
VALUES
(1, 1, 100),
(2, 1, 200),
(3, 2, 250),
(4, 2, 20),
(5, 3, 10)
;
SQL:
SELECT
type, SUM(summ) as total
FROM
test
GROUP BY
type
结果是3行按type
分组,总和值为total
:1 - 300,2 - 270,3 - 10。
问:如何将total
类型的最终1
结果从所有其他结果(2
和3
中减去?结果将是:300 - 270 - 10 = 20。
所以,我需要得到20
。
答案 0 :(得分:1)
您可以使用SUM
和CASE
:
SELECT SUM(CASE WHEN type = 1 THEN summ ELSE -summ END) as total
FROM test
的 SqlFiddleDemo
强>
type = 1
的记录将保持不变,休息将被取消。