我對SQL不太熟悉。我正在使用oracle。我遇到了一個超過總計字段的問題。具有多個連接和組的SQL嵌套總和
下面是例子表:
A:
A_ID
A_NAME
B:
B_ID
A_ID
B_NAME
B_QTY
C:
C_ID
B_ID
C_QTY
因此,數據結構是像A - > * B - > * C
我需要得到B和C的總量由B_NAME分組和A_ID。例如:
A:
A_ID A_NAME
1 A1
B:
B_ID A_ID B_NAME B_QTY
1 1 B1 20
2 1 B1 5
3 1 B1 5
4 1 B2 5
C:
C_ID B_ID C_QTY
1 1 3
2 1 4
4 2 2
5 2 1
6 3 1
7 4 1
預期的結果是:
A_ID A_NAME B_NAME B_QTY C_QTY
1 A1 B1 30 11
1 A1 B2 5 1
B_QTY在第一行中的30是在20 + 5 + 5
C_QTY的11中的第一結果線是結果3 + 4 + 2 + 1 + 1
這是我的SQL:
select a.A_ID,
a.A_NAME,
b.B_NAME
sum(b.B_QTY),
sum(c.C_QTY)
from A a left outer join B b on b.A_ID = a.A_ID
left outer join C c on c.B_ID = b.B_ID
group by a.A_ID
order by a.A_ID, b.B_NAME
where a.XXXX = XXXXX;
所以問題是:
由於B映射到多個Cs,B_QTY將被疊加多次。我對SQL不是很熟悉,所以我不知道是否有任何簡單的方法來根據某些字段(在我的示例中是B_ID)來區分求和。謝謝!
請提供您試圖在查詢完成什麼更好的解釋。 – OldProgrammer 2013-04-08 02:06:31
示例數據和期望的輸出可能對解釋您的問題有很大的幫助。 – 2013-04-08 02:12:18
更新了示例數據。謝謝:) – Xiezi 2013-04-08 02:33:46