首先,抱歉我的英语不好:)
我有以下示例表数据:
ID名称状态量
1个NAME1开2
1个NAME1开放3
1个NAME1关闭4个
2个NAME2开放5
2 NAME2闭合8个
2 NAME2关闭4个
我想汇总每个州(开放或关闭)和名称(名称1或名称2)的金额数据
这样的事情:
id name open(金额)关闭(金额)
1 NAME1 5(2 + 3)4
2 NAME2 5 12(8 + 4)
有人能帮助我吗?
答案 0 :(得分:2)
除了已经选择的答案,另一种方法是:
SELECT
id
,name
,SUM( IF( state = 'open' ,amount ,0 ) ) open_total
,SUM( IF( state = 'closed' ,amount ,0 ) ) closed_total
FROM
`data`
WHERE
1
GROUP BY
name
答案 1 :(得分:1)
SELECT id, name,
SUM(CASE WHEN state="open" THEN amount else 0 END) AS `open`,
SUM(CASE WHEN state="closed" THEN amount else 0 END) AS `closed`
FROM <yourtablename>
GROUP BY id;
请注意派生列名称中的特殊引号,它们不能替换为不同类型的引号。