2012-11-30 38 views
0

我有一個醫院的數據庫。在一個表中有一個或多個交易號碼,幾乎所有交易號碼都只包含一個醫生ID。該表尚未正常化。通過未標準化表中的ID從列中獲取SUM?

的數據如下所示:

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' 如放射

回答

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