我的桌子设计如下:-
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. 如果表为空,则获取表 A 中存在的所有 subCatId 和 catId,其中 catDesc=100 并根据表 A 的 subCatId 获取表 B 的数量。
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(包括表 B 中已经存在的金额值 5)。同样,对于 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
它们各自数量的方法。请帮助...谢谢。应用左外连接的原因是,如果 subCatId 在表 B 中不存在,但在表 A 中存在,那么它也应该与结果一起显示。