这是我的表的一个例子:
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)但在每个“路线”的列中:
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并将各列放在一起,这也是我所坚持的。
0
IV
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