0

我有一个来自医院的数据库。在一个表中有 1 个或多个交易号,几乎所有交易号都只包含 1 个医生 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   |10004      |JASA MEDIS                     |   |25000.00
10.836032   |           |PEMERIKSAAN RADIOLOGI NO 0932.1|R  |15000.00
10.836034   |10604      |JASA MEDIS                     |   |25000.00
10.836034   |           |PEMERIKSAAN RADIOLOGI NO 0932.1|R  |20000.00

我知道我的表需要规范化,但我无法更改数据库,因为我无权这样做。

问题是如何得到这样的结果:

Doctor_ID  |medicine    |radiology
10004      |2000.00     |15000.00
10001      |0.00        |0.00
10604      |0.00        |20000.00

PM='F' 作为医学和 PM='R' 作为放射学

4

1 回答 1

1
SELECT   doctor_id, SUM(medicine) medicine, SUM(radiology) radiology
FROM     (
  SELECT   MAX(doctor_id) doctor_id,
           SUM(IF(pm='F', cost, NULL)) medicine,
           SUM(IF(pm='R', cost, NULL)) radiology
  FROM     my_table
  GROUP BY Trans_No
) t
GROUP BY doctor_id

sqlfiddle上查看。

于 2012-11-30T15:15:47.573 回答