Mysql 按枚举值检索总和(计数)

Mysql 按枚举值检索总和(计数),mysql,sql,Mysql,Sql,这是我的表格的一个示例: drug_id | route (enum) | count ------------------------------ 1 | PO | 2 1 | IV | 4 1 | IV | 6 2 | PO | 1 2 | PO | 5 2 | IV | 2 这就是我需要信息的方式。

这是我的表格的一个示例:

drug_id | route (enum) | count
------------------------------
1       | PO           | 2
1       | IV           | 4
1       | IV           | 6
2       | PO           | 1
2       | PO           | 5
2       | IV           | 2
这就是我需要信息的方式。基本上是它的总和(计数),但在每个“路线”的列中:

我想我需要一个支点,我一直在努力学习这个支点,但我无法用我的一生拼凑出一个简洁的查询

我试过这样的方法:

SELECT drug_id, PO, IV 
FROM 
    (
        SELECT drug_id, SUM(count) as PO, '0' as IV FROM `core_reports_antiinfectives` WHERE route="PO"
        UNION
        SELECT drug_id, SUM(count) as IV, '0' as PO FROM `core_reports_antiinfectives` WHERE route="IV"
    ) aa
然而,对于所有的
IV
列,这给了我
0
,我不认为这是合适的——它需要根据
drugh\u id
进行“分组”,并将这些列放在一起,我也坚持这样做

我有什么遗漏吗?还是有更好的办法

谢谢

SELECT   drug_id,
         SUM(IF(route='PO',count,NULL)) AS PO,
         SUM(IF(route='IV',count,NULL)) AS IV
FROM     core_reports_antiinfectives
GROUP BY drug_id
请打开它。

试试这个

SELECT drug_id,
        SUM(case route when 'po' then `count` else 0 end) totalPO,
        SUM(case route when 'iv' then `count` else 0 end) totalIV
FROM core_reports_antiinfectives
GROUP BY drug_id
SELECT drug_id,
        SUM(case route when 'po' then `count` else 0 end) totalPO,
        SUM(case route when 'iv' then `count` else 0 end) totalIV
FROM core_reports_antiinfectives
GROUP BY drug_id