我正在尝试聚合一些列,但有一些条件。请考虑以下事项:
Encounter
number enc_id
1324 01
Charge
charge_id enc_id amt1 amt2 amt3
01 01 0.00 0.00 0.01
02 01 0.00 0.01 0.02
SELECT Encounter.number, sum(Charge.amt3)
FROM Charge
WHERE
Charge.enc_id = '01'
GROUP BY
Encounter.number
HAVING
sum(Charge.amt1 + Charge.amt2) = 0.00
数据库规则是在遭遇中有多个费用。我需要总结amt3
,但如果任何费用具有以下条件:amt1
> 0.00或amt2
> 0.00然后不要总结任何相关费用。
这是返回的内容
Enc_number sum(Charge.amt3)
1234 0.01
我不应该退货。
我该怎么做?
答案 0 :(得分:0)
运行时我正确得到0结果:
select
enc_id
, sum(c.amt3) as sumAmt3
from Charge c
where c.enc_id = 1
group by c.enc_id
having sum(c.amt1 + c.amt2) = 0.00;
另一个选项是使用not exists()
enc_id
select
c.enc_id
, sum(c.amt3) as sumAmt3
from Charge c
where c.enc_id = '01'
and not exists (
select 1
from Charge i
where i.enc_id = c.end_id
and (i.amt1>0 or i.amt2>0)
)
group by c.enc_id;
rextester 演示:http://rextester.com/NFBKA57470