我正在尝试编写一个查询来获取有条件的表的总和。例如这张表
area | machine | status | qty
1 | machine1 | inprocess | 210
1 | machine2 | pending | 120
1 | machine3 | done | 50
2 | machine1 | inprocess | 30
2 | machine2 | done | 170
我想要的结果是
area | inprocess sum | pending sum | done sum | all sum
1 | 210 | 120 | 50 | 380
2 | 30 | 0 | 170 | 200
我正在考虑带有条件的分组条款,但我似乎无法获得解决此问题所需的解决方案。我尝试的是
select distinct
area,
(select sum(qty) from table
where status = 'inprocess'
and area = mainTable.area) as inprocess sum
(select sum(qty) from table
where status = 'pending'
and area = mainTable.area) as pending sum
(select sum(qty) from table
where status = 'done'
and are = mainTable.area) as done sum
from table mainTable
在某种程度上,它确实有效,但是当我尝试检查我是否得到正确的数量时,我似乎无法将实际值与我的查询结果相匹配。(我正在处理一个更大的数据集,数百万条记录)。我想我真正想要的是一个 group by 子句,我可以在其中放入条件,因此它只会聚合与条件匹配的记录。请照亮绝地大师