MYSQL转换数据

时间:2013-10-19 21:31:43

标签: mysql sql

首先,抱歉我的英语不好:)

我有以下示例表数据:

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)

有人能帮助我吗?

2 个答案:

答案 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;

请注意派生列名称中的特殊引号,它们不能替换为不同类型的引号。