我有我的表的下方设计: -Oracle组加入
Table A
--------------------------
subCatId | catId | catDesc
--------------------------
1 | 3 | 100
2 | 3 | 100
3 | 5 | 100
4 | 5 | 100
5 | | 100
Table B
--------------------------
subCatId | amount
--------------------------
1 | 10
2 | 20
3 | 5
4 | 15
5 |
第三个表,即表AB,是一个地方的记录将被插入。在上述表格的基础上,查询应该: 1.检查表格AB,是否存在任何subCatId。 2.如果该表为空,则获取catDes表中存在catDesc = 100且基于表A的subCatId的表B的数量的所有subCatId & catId。
Table AB
--------------------------
subCatId | catId | amount
--------------------------
1 | 3 | 10
2 | 3 | 20
3 | 5 | 35
4 | 5 | 15
5 | | 50
正如你可以看到上面的表AB为subCatId 1 & 2 CATID是3,从而对1 & 2应总结并示出了用于subCatId 3(包括量值5,其已经是量的值在表B中)。相似地,对于subCatId 5,金额值应该从subCatId 3 & 4.
我真的很感谢,如果有人能够帮助我获得如上所示的TableAB预期结果。
我曾尝试下面的查询分别
SELECT A.CATID, SUM(B.AMOUNT)
FROM A LEFT OUTER JOIN B
ON A.SUBCATID = B.SUBCATID
WHERE A.CATDESC=100
AND A.SUBCATID NOT IN
(SELECT AB.SUBCATID FROM AB)
GROUP BY CATID;
但是,它只给CATID和总量值,但我无法找到一个办法让subCatId
和它们各自的量也。请帮助...谢谢。应用左外连接的原因是,如果表B中不存在subCatId,但它存在于表A中,那么它也应该与结果一起显示。
我已经单独尝试了下面的查询“SELECT A.CATID,SUM(B.AMOUNT)FROM LEFT OUTER JOIN B ON A.SUBCATID = B.SUBCATID WHERE A.CATDESC = 100 AND A.SUBCATID NOT IN(SELECT AB.SUBCATID FROM AB)GROUP BY CATID;“。然而,它只给出了catid和总金额值,但我无法找到获得子金额及其各自金额的方法。请帮助...谢谢。应用左外连接的原因是,如果表B中不存在subCatId,但它存在于表A中,那么它也应该与结果一起显示。 – SteveM 2012-07-07 16:53:17