小编典典

通过ENUM值检索SUM(count)

sql

这是我的表的一个例子:

drug_id | route (enum) | count
------------------------------
1       | PO           | 2
1       | IV           | 4
1       | IV           | 6
2       | PO           | 1
2       | PO           | 5
2       | IV           | 2

这就是我需要的信息。基本上是它,SUM(count)但在每个“路线”的列中:

drug_id | PO | IV 
-----------------
1       | 2  | 10
2       | 6  | 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

但是,这为我0提供了“全部”IV列,无论如何我都不相信它是适当的-它需要“分组”drug_id并将各列放在一起,这也是我所坚持的。

有什么我想念的吗?还是有更好的方法来解决这个问题?

谢谢!


阅读 166

收藏
2021-04-28

共1个答案

小编典典

试试这个

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

SQLFiddle演示

2021-04-28