2016-10-28 49 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;