微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用不同的WHERE条件从同一个表中选择相同的列

如何解决用不同的WHERE条件从同一个表中选择相同的列

我有两张桌子:

一个表:PATIENT 列:

ID number(PK),LastName varchar2,FirstName varchar2 

和样本数据:

ID  LastName    FirstName
-------------------------
1    Jobs       Tom
2    norks      Jack
3    Loonie     Peter

第二个表:PAYMENTS 带列:

ID number(PK),PATIENT_ID number (FK Patient.ID),PRICE number,EXTRA_PAYMENT number (takes only 0 or -1) 

和样本数据:

ID   PATIENT_ID  PRICE   EXTRA_PAYMENT 
----------------------------------------
1       1        50€        0
2       1        20€        0
3       3        40€        0
4       1        30€        0
5       2        70€        0
6       3        25€        0
7       2        5€        -1
8       3        25€        0
9       2        10€       -1
10      2        50€        0

我想创建一个查询来返回这 3 列:

PATIENT             PRICE       EXTRA_PRICE
--------------------------------------------
Tom Jobs            100€            0€
Jack norks          120€            15€
Peter Loonie        90€             0€

我该怎么做?

解决方法

加入表后可以使用聚合:

select p.firstname || ' ' || p.lastname as patient,sum(pm.price * pm.extra_price) as price,sum(pm.price * (1 - pm.extra_price)) as extra
from patients p left join
     payments pm
     on p.id = pm.patient_id
group by p.id,p.firstname || ' ' || p.lastname;

编辑:

对于已更改的问题,您可以使用case

select p.firstname || ' ' || p.lastname as patient,sum(case when pm.extra_price = 0 then pm.price end) as price,sum(case when pm.extra_price = -1 then pm.price end) as extra
from patients p left join
     payments pm
     on p.id = pm.patient_id
group by p.id,p.firstname || ' ' || p.lastname;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。