我需要通过患者从实验室,放射科,药房和其他部门等各个部门找到医生的收入。
我只有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 :(得分: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;