Sql 计算子项之和';每个父母的余额是多少

Sql 计算子项之和';每个父母的余额是多少,sql,oracle,Sql,Oracle,我有两个具有父子关系的表 Table1 | Account_no | Main_account_no | bla bla +------------+-----------------+---------- | 234 | 111 | | 235 | 111 | | 222 | 112 | | 220 | 112 | 第二点:

我有两个具有父子关系的表

Table1
| Account_no | Main_account_no | bla bla
+------------+-----------------+----------
|     234    |        111      |  
|     235    |        111      |  
|     222    |        112      |  
|     220    |        112      |  
第二点:

Table2
| Account_no | Balance         | bla bla
+------------+-----------------+----------
|     234    |        10       |  
|     235    |        15       |  
|     222    |        55       |  
|     220    |        45       |  
我需要的是计算每个父帐户的子帐户余额之和。 预期的结果是

| Main_account_no | Balance |
+-----------------+---------+
| 111             |  35     |
| 112             |  100    |
我正在尝试使用

SELECT MAIN_ACCOUNT_NO, SUM((SELECT BALANCE FROM TABLE2 WHERE ACCOUNT_NO = A.ACCOUNT_NO)) OVER (PARTITION BY MAIN_ACCOUNT_NO)
FROM TABLE1 A
GROUP BY MAIN_ACCOUNT_NO
但我得到的是
ORA-00979:不是一组表达式


我哪里做错了?

因为这显然不是家庭作业…:-)

首先,让我们将主账户号与余额一起获取:

select
    Table1.Main_account_no,
    Table1.Account_no,
    Table2.Balance
from
    Table1
    join Table2 on Table1.Account_no = Table2.Account_no
给予

现在,我们可以根据需要轻松分组:

select
    Table1.Main_account_no,
    sum(Table2.Balance) as total
from
    Table1
    join Table2 on Table1.Account_no = Table2.Account_no
group by
    Table1.Main_account_no

因为这显然不是家庭作业…:-)

首先,让我们将主账户号与余额一起获取:

select
    Table1.Main_account_no,
    Table1.Account_no,
    Table2.Balance
from
    Table1
    join Table2 on Table1.Account_no = Table2.Account_no
给予

现在,我们可以根据需要轻松分组:

select
    Table1.Main_account_no,
    sum(Table2.Balance) as total
from
    Table1
    join Table2 on Table1.Account_no = Table2.Account_no
group by
    Table1.Main_account_no

我对甲骨文不太熟悉,但你的说法违背了一个团体的宗旨。您要求每一行运行另一个查询来为您提取总和。我不想透露太多,因为我怀疑这是一个家庭作业:-)我会先忽略聚合,然后进行查询,得到一个包含3列的表<代码>主帐户\u否,帐户\u否,余额-然后您可以将分组依据添加到该帐户中。嗯,您使用的是正确的
分组依据
似乎没有用,我将尝试您建议的方法,这不是家庭作业
分组依据
是正确的,是
总和(选择…)
中的选择位没有用(这将导致对每一行进行额外的select查询)。那么我猜您的查询中唯一的缺陷就是
OVER
子句。我不知道您为什么要在查询中添加此子句。删除它,您应该会很好。我对Oracle不太熟悉,但您的语句违背了group by的目的。您要求每行运行另一个查询来为您提取总和。我不想放弃太多b因为我怀疑这是家庭作业:-)我会先忽略聚合,然后进行一个查询,得到一个包含3列的表<代码>主帐户\u否,帐户\u否,余额-然后您可以将分组依据添加到该帐户中。嗯,您使用的是正确的
分组依据
似乎没有用,我将尝试您建议的方法,这不是家庭作业
分组依据
是正确的,是
总和(选择…)
中的选择位没有用(这将导致每一行都有一个额外的select查询)。那么我猜您的查询中唯一的缺陷就是
OVER
子句。我不知道您为什么要在查询中添加这个。删除它,您应该会没事的。