我有一个医院的数据库。在一个表中有一个或多个事务编号,几乎所有事务编号都只包含一个医生ID。该表尚未规范化。
数据如下:
Trans_No |Doctor_ID |Trans_Type |PM |Cost
10.853329 | |ADMINISTRASI | |0.00
10.853329 |10004 |JASA MEDIS | |25000.00
10.853329 | |OBAT RESEP FARMASI NO : 1077 |F |2000.00
10.836033 | |ADMINISTRASI | |0.00
10.836033 |10001 |JASA MEDIS | |25000.00
10.836033 | |OBAT RESEP FARMASI NO : 3137 |F |0.00
10.836032 | |ADMINISTRASI | |0.00
10.836032 |10001 |JASA MEDIS | |25000.00
10.836032 | |OBAT RESEP FARMASI NO : 3138 |F |10000.00
如何从PM列值为F的那个医生处获取医生ID和成本之和?
我无法更改数据库,因为它已经有超过十万个事务。
最佳答案
使用子查询创建一个“表”,将Trans_No映射到Doctor_ID。然后将您的实际表与此子查询连接,以便为每个事务行都有一个Doctor_ID。然后你可以做你的WHERE
和GROUP BY
。
SELECT tdoc.Doctor_ID, SUM(Cost) FROM your_table
JOIN (
SELECT Trans_No, Doctor_ID FROM your_table WHERE Doctor_ID <> ''
GROUP BY Trans_No, Doctor_ID
) tdoc ON tdoc.Trans_No = your_table.Trans_No
WHERE PM = 'F'
GROUP BY tdoc.Doctor_ID