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 に答える