2016-10-28 94 views
0

上查找不同部門的收入我需要通過患者查找來自各個部門(如實驗室,放射科,藥房和其他部門)的醫生收入。Postgresql SQL從發票號碼

我只有document_number列的值記錄爲'L1432','R87j7','P652'等,如果doc_no以'L'開頭,那麼它是實驗室,如果doc_no以'R'開頭,那麼它是放射學,如果doc_no以'P'開頭,那麼它是藥房。我怎樣才能在SQL中做到這一點?

輸出應該是這樣的:

doctor_name laboratory radiology pharmacy others 
Michel  23098  6763  78732  98838 
John   77838  89898  56542  52654 
Cranys  98973  78763  5432  65565 
+0

你的數據模型是有缺陷的。將邏輯放入關鍵字並不是一個好主意。你的表應該有一個適當的外鍵指向'departments'表 –

回答

1

這是一個有條件的聚集由document_number的第一個字符:

select doctor_name, 
     sum(turnover) filter (where left(document_number,1) = 'L') as laboratory, 
     sum(turnover) filter (where left(document_number,1) = 'R') as radiology, 
     sum(turnover) filter (where left(document_number,1) = 'P') as pharmacy, 
     sum(turnover) filter (where left(document_number,1) not in ('L','R','P')) as others 
from the_table 
group by doctor_name 
order by doctor_name;