2017-07-06 32 views
0

我有父子關係計算兒童餘額總和爲每個父

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: not a GROUP BY expression

在哪裏我做錯了什麼?

+1

我'我對甲骨文不太熟悉,但是你的陳述打敗了甲骨文的目的。您要求每行都運行另一個查詢來爲您提供總和。我不想放棄太多,因爲我懷疑這是作業:-) –

+0

我會先忽略聚合,並開始一個查詢,給你一個3列的表; 'main_account_no,account_no,balance' - 然後你可以添加組。 –

+0

hm您正確使用group by似乎沒用,我會嘗試您的建議方法,而不是作業 – Hatik

回答

2

因爲這顯然不是功課... :-)

首先,讓我們得到了main_account_nos餘額旁邊:

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

給人

| Main_account_no | Account_no | Balance   | 
+-----------------+------------+-----------------+ 
|  111  |  234 |  10  | 
|  111  |  235 |  15  | 
|  112  |  222 |  55  | 
|  112  |  220 |  45  | 

現在我們可以很容易地組根據要求:

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