繁体   English   中英

Oracle SQL Developer(4.0.0.12)

[英]Oracle SQL Developer(4.0.0.12)

第一次在这里发布,希望一切顺利。

我尝试使用Oracle SQL Developer进行查询,该查询从表中返回customer_ID,并从另一个表中返回付款时间。 我很确定问题出在我的逻辑流程之内(这是我使用SQL的时间很长了,而且又回到学校了,所以我对此有些生锈)。 我想将ID列出为DISTINCT和ORDER BY日期(升序),因此只会显示第一个日期。

但是,在某些情况下,返回的表包含相同ID的两倍甚至更多。 滚动浏览时,我甚至发现了相同的ID和相同的DATE几次。

如果您想了解更多,请询问!

SELECT DISTINCT
    FIRM.customer.CUSTOMER_ID,
    FIRM.account_recharge.X__INSDATE FELTOLTES
FROM
    FIRM.customer
        INNER JOIN FIRM.account
        ON FIRM.customer.CUSTOMER_ID = FIRM.account.CUSTOMER
            INNER JOIN FIRM.account_recharge
            ON FIRM.account.ACCOUNT_ID = FIRM.account_recharge.ACCOUNT
WHERE
    FIRM.account_recharge.X__INSDATE BETWEEN TO_DATE('14-01-01', 'YY-MM-DD') AND TO_DATE('14-12-31', 'YY-MM-DD')
ORDER
    BY FELTOLTES

选择DISTINCT FIRM.customer.CUSTOMER_ID,FIRM.account_recharge.X__INSDATE FELTOLTES

不同的是应用到列在一起,这意味着你会得到一个不同的ROW从两列值的集合 因此,基本上,非重复是指选择列表中的所有列。

它等效于一个没有唯一但由group by子句组成的选择。

它的意思是,

select distinct a, b....

等价于

select a, b...group by a, b

如果需要所需的输出,则CONCATENATE列。 然后,Distict将在单个串联的结果集上工作。

您的选择之所以这样工作,是因为CUSTOMER_ID实际上具有多个X__INSDATE ,因此结果中的记录将是不同的。 如果只需要第一个日期,则不要使用DISTINCTORDER BY而是尝试选择MIN(X__INSDATE)并使用GROUP BY CUSTOMER_ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM