我对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