Postgresql SQL在发票号上查找不同部门的收入
Posted
技术标签:
【中文标题】Postgresql SQL在发票号上查找不同部门的收入【英文标题】:Postgresql SQL to find revenue from different department on invoice number 【发布时间】:2017-03-10 23:35:30 【问题描述】:我需要通过病人找到实验室、放射科、药房等各个部门的医生收入。
我只有 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
【问题讨论】:
您的数据模型有缺陷。将逻辑放入键中并不是一个好主意。您的表应该有一个正确的外键指向departments
表
【参考方案1】:
这是按文档编号的第一个字符进行的条件聚合:
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;
【讨论】:
以上是关于Postgresql SQL在发票号上查找不同部门的收入的主要内容,如果未能解决你的问题,请参考以下文章