通过完全外部联接分组吗?

时间:2018-07-12 08:49:01

标签: sql oracle

我正在处理两个桌子

产品表 与 PRODUCTID,价格

我正在与

一起工作

ORDERLINE 表 其中有 PRODUCTID,QUANTITY,ORDERID

我想同时加入两个表,以便拥有

ORDERQUANTITY 其中有 PRODUCT.PRODUCTID,ORDERLINE.QUANTITY 分组依据 PRODUCTID

换句话说,我希望两个表不像这样:

PRODUCTID   QUANTITY
-       10          4
-       10          2
-       20          1
-       20          6
-       30          4
-       30          6
-       30          2
-       30          2
-       40          2
-       40          2
-       40          5

但是像 this

 PRODUCTID   QUANTITY
-    10          6
-    20          7
-    30          14
-    40          9

当我尝试按productid分组时,下面显示的当前代码仅在第一个表中起作用。

SELECT PRODUCT.PRODUCTID, ORDERLINE.QUANTITY
FROM ORDERLINE
FULL OUTER JOIN PRODUCT ON PRODUCT.PRODUCTID = ORDERLINE.PRODUCTID
ORDER BY PRODUCT.PRODUCTID;

4 个答案:

答案 0 :(得分:2)

如果只需要ID和订购数量的总和,则不需要加入:

select PRODUCTID, sum(QUANTITY)
from ORDERLINE
group by PRODUCTID
order by PRODUCTID;

答案 1 :(得分:1)

我认为简单的SUM聚合函数和GROUP BY查询就足够了:

SELECT PRODUCT.PRODUCTID, coalesce( SUM( ORDERLINE.QUANTITY), 0 )
FROM ORDERLINE
FULL OUTER JOIN PRODUCT ON PRODUCT.PRODUCTID = ORDERLINE.PRODUCTID
GROUP BY PRODUCT.PRODUCTID
ORDER BY PRODUCT.PRODUCTID;

答案 2 :(得分:0)

我不确定是否能理解您的问题,但我认为这种观点应能为您提供所要的结果:

SELECT PRODUCT.PRODUCTID, SUM(ORDERLINE.QUANTITY) AS QUANTITY
FROM ORDERLINE
FULL OUTER JOIN PRODUCT ON PRODUCT.PRODUCTID = ORDERLINE.PRODUCTID
GROUP BY PRODUCT.PRODUCTID
ORDER BY PRODUCT.PRODUCTID;

答案 3 :(得分:0)

SELECT PRODUCT.PRODUCTID, SUM(ORDERLINE.QUANTITY)
FROM ORDERLINE
FULL JOIN PRODUCT ON PRODUCT.PRODUCTID = ORDERLINE.PRODUCTID
GROUP BY PRODUCT.PRODUCTID

这里正在起作用:SQL Fiddle