我正在尝试获取过去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输入上述查询时,您将获得不同的值。
有人可以提供建议吗?
答案 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_date
或dispense_amount
。你似乎只想要每人一排。