首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle连接具有Distinct答案的两个查询

Oracle连接具有Distinct答案的两个查询
EN

Stack Overflow用户
提问于 2014-12-04 19:36:44
回答 1查看 42关注 0票数 0

我需要帮助链接两个表在一起,带回我需要的数据。我有两个问题:第一个问题如下:

代码语言:javascript
复制
    SELECT 
        POI.PO_ID as PO_ID, SUM(POI.INV_QTY) AS INV_QTY, POI.INV_NUMBER, 
        PO.SUP_SUP_ID AS SUPPLIER

    FROM TABLE1 POI, PUR_ORDS PO
    WHERE POI.PO_ID = '56886' AND POI.PO_ID = PO.PO_ID
    GROUP BY POI.PO_ID, POI.INV_NUMBER, PO.SUP_SUP_ID
    ORDER BY POI.INV_NUMBER ASC

此查询的结果如下:

代码语言:javascript
复制
PO_ID|INV_QTY|INV_NUMBER|SUPPLIER
---------------------------------
56886|    105|INV1      |SUP1
56886|    106|INV2      |SUP1

我的第二个查询是:

代码语言:javascript
复制
    SELECT 
        DIL.PO_PO_ID, sum(DIL.ACPTD_QTY) as ACPTD_QTY, 
        DIL.DLVD_DLVY_NUMB AS DEL_NUM
    FROM TABLE2 DIL
    where DIL.PO_PO_ID = '56886'
    GROUP BY PO_PO_ID, DIL.DLVD_DLVY_NUMB
    order by del_num

此查询的结果如下:

代码语言:javascript
复制
PO_PO_ID|ACPTD_QTY|DEL_NUM
--------------------------
   56886|      105|      1
   56886|      106|      2

现在,我正在尝试连接这两个表,但我使用以下命令获得了多个值:

代码语言:javascript
复制
SELECT  DISTINCT(PO_ID), INV_NUMBER, INV_QTY, SUPPLIER, ACPTD_QTY, DEL_NUM
FROM
(SELECT 
            SELECT POI.PO_ID as PO_ID, SUM(POI.INV_QTY) AS INV_QTY, 
                POI.INV_NUMBER, PO.SUP_SUP_ID AS SUPPLIER
            FROM TABLE1 POI, PUR_ORDS PO
            WHERE POI.PO_ID = '56886'
            AND POI.PO_ID = PO.PO_ID
            GROUP BY POI.PO_ID, POI.INV_NUMBER, PO.SUP_SUP_ID
            ORDER BY POI.INV_NUMBER ASC) POINET
INNER JOIN
(SELECT DIL.PO_PO_ID, sum(DIL.ACPTD_QTY) as ACPTD_QTY, 
                DIL.DLVD_DLVY_NUMB AS DEL_NUM
            FROM TABLE 2 DIL
            where DIL.PO_PO_ID = '56886'
            GROUP BY PO_PO_ID, DIL.DLVD_DLVY_NUMB
            order by DEL_NUM) DILV

            ON DILV.PO_PO_ID = POINET.PO_ID
            GROUP BY PO_ID, INV_NUMBER, INV_QTY, SUPPLIER, ACPTD_QTY, DEL_NUM
            ORDER BY INV_NUMBER

然而,我得到的数据集是:

代码语言:javascript
复制
PO_ID|INV_NUMBER   |INV_QTY|SUPPLIER|ACPTD_QTY|DEL_NUM
-----------------------------------------------------
56886|K-101/2014-15|    105|SUP1    |      105|     1
56886|K-101/2014-15|    105|SUP1    |      106|     2
56886|K-107/2014-15|    106|SUP1    |      105|     1
56886|K-107/2014-15|    106|SUP1    |      106|     2

然而,我需要它显示以下内容:

代码语言:javascript
复制
PO_ID|INV_NUMBER   |INV_QTY|SUPPLIER|ACPTD_QTY|DEL_NUM
------------------------------------------------------
56886|K-101/2014-15|    105|SUP1    |      105|      1
56886|K-107/2014-15|    106|SUP1    |      106|      2

我需要做什么,来调整我的查询?任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-12-04 19:44:44

我认为您只需要修改您的join语句来连接这两列

代码语言:javascript
复制
ON DILV.PO_PO_ID = POINET.PO_ID
AND DILV.INV_QTY = POINET.ACPTD_QTY

实际上,您可以省略PO_ID,因为它在两个子查询中是相同的:

例如,只需这样做(在倒数第三行):

代码语言:javascript
复制
ON DILV.INV_QTY = POINET.ACPTD_QTY
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27293053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档