我正在尝试获取过去 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 时,您会得到一个不同的值。
有人可以建议吗?
最佳答案
切勿在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;
请勿在分组依据
中包含dispense_date
或dispense_amount
。您似乎只想每人一行。
关于sql - 无法获取分配金额总和以添加分组分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48341669/