我有我的表的下方設計: -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