繁体   English   中英

Select 来自同一张表的同一列具有不同的 WHERE 条件

[英]Select the same column from same table with different WHERE conditions

我有两张桌子:

第一张表: 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM