比较2个不同表格的总和

时间:2012-10-03 17:58:07

标签: sql oracle

我想在A.BUSINESS_UNIT_PO,A.PO_ID,A.LINE_NBR上比较两个表之间的数量总和。以下查询对我不起作用。你们中的任何人都可以告诉我这个问题中的问题。

SELECT A.BUSINESS_UNIT_PO,
       A.PO_ID, 
       A.LINE_NBR 
 FROM PS_BCT_DTL A
WHERE A.BCT_DET_STATUS=1
  AND SUM(A.QTY) = (SELECT SUM(B.QTY_SH_RECVD) 
                     FROM PS_RECV_LN_SHIP B
                    WHERE A.BUSINESS_UNIT_PO=B.BUSINESS_UNIT_PO
                      AND A.PO_ID= B.PO_ID
                      AND A.LINE_NBR= B.LINE_NBR
                     )
GROUP BY A.BUSINESS_UNIT_PO,A.PO_ID, A.LINE_NBR

2 个答案:

答案 0 :(得分:4)

尝试使用having,如下所示:

SELECT A.BUSINESS_UNIT_PO,
       A.PO_ID, 
       A.LINE_NBR,
       SUM(A.QTY) 
FROM PS_BCT_DTL A
WHERE A.BCT_DET_STATUS=1    
GROUP BY A.BUSINESS_UNIT_PO,A.PO_ID, A.LINE_NBR
having SUM(A.QTY) =(SELECT SUM(B.QTY_SH_RECVD) 
                 FROM PS_RECV_LN_SHIP B
                 WHERE A.BUSINESS_UNIT_PO=B.BUSINESS_UNIT_PO
                 AND A.PO_ID= B.PO_ID
                 AND A.LINE_NBR= B.LINE_NBR)

Here是关于拥有的更多信息。

答案 1 :(得分:2)

select
  A.BUSINESS_UNIT_PO,A.PO_ID,A.LINE_NBR,
  sum(a.qty) sumA,
  sum(b.qty) sumB
from
  a inner join
  b on 
   A.BUSINESS_UNIT_PO=B.BUSINESS_UNIT_PO AND 
   A.PO_ID= B.PO_ID  AND 
   A.LINE_NBR= B.LINE_NBR
group by
 A.BUSINESS_UNIT_PO,A.PO_ID,A.LINE_NBR
having
  sum(a.qty) = sum(b.qty);