sql - 无法获取分配金额总和以添加分组分配

标签 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 时,您会得到一个不同的值。

有人可以建议吗?

最佳答案

切勿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_datedispense_amount。您似乎只想每人一行。

关于sql - 无法获取分配金额总和以添加分组分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48341669/

相关文章:

oracle - 如何通过代码确定 Oracle 数据类型的字符串值?

mysql - Entity Framework 和数据库不可知编程,可能性?

sql - 微软 SQL : Performance for querying ID descending

sql - 表设计问题 - 我应该创建单独的字段还是存储为 blob

php - SQL 查询,比较表、字符串和整数之间的数据

sql - 查询以在一行中查找最多三列

sql - 200K数据库查询结果耗时太长,提速提示?

sql - 如何将逗号分隔的值转换为oracle中的行?

sql - 通过选择查询转置表

Oracle PL/SQL。 DBMS_UTILITY.EXEC_DDL_STATEMENT 和 DBMS_ADVISOR.create_task