无法获得分配数量的总和以添加分组分配

时间:2018-01-19 12:56:33

标签: sql oracle

我正在尝试获取过去90天内已经进入商店的人员名单并且已经进行了分发。我正在尝试获得分配金额的总和,然后按照他们的全名和个人ID进行分组。这样做时,分配量的总和不会被添加到其中。请参阅下面的查询。

select sum(d.dispense_amount), 
       p.full_name, 
       d.dispense_date, 
       p.person_id, 
       p.gender
from   dispense d,
       patients p
where  d.pid = p.pid
and    d.dispense_date >= sysdate -90
group by dispense_amount, p.person_id, p.full_name, d.dispense_date, p.gender;

执行此操作时,分配的总和不会添加。我试图将查询拆分为显示如下:

select sum(dispense_amount) from dispense
where  pid = 34359820391
and    dispense_date >= sysdate -90;

这里的人有正确的金额。将pid输入上述查询时,您将获得不同的值。

有人可以提供建议吗?

1 个答案:

答案 0 :(得分:2)

从不FROM子句中使用逗号。 始终使用正确的JOIN语法。

然后,我想你想要:

select sum(d.dispense_amount), 
       p.full_name, p.person_id, p.gender
from patients p join
     dispense d
     on d.pid = p.pid
where d.dispense_date >= sysdate - 90
group by p.person_id, p.full_name, p.gender;

请勿在{{1​​}}中加入dispense_datedispense_amount。你似乎只想要每人一排。