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
子句。我不知道您为什么要在查询中添加这个。删除它,您应该会没事的。