在重复项中查找最早日期的唯一值

问题描述 投票:0回答:0

我有以下查询,我需要更改它以仅返回来自

tracking_number
(如果重复)的唯一值以及每个重复项中最早的
created_date

SELECT  o.order_id,
    ti.tracking_number,
    ti.created_date,
    o.order_date, 
    ae.not_uploaded, 
    ae.uploaded_late, 
    ae.uploaded_on_time_but_no_carrier_scan
FROM    orders o
JOIN    tracking_info ti ON o.order_id = ti.order_id
JOIN    april_evaluation ae ON RIGHT(o.product_id, 13) = ae.transaction_id
WHERE   ae.not_uploaded = 'YES'
    OR ae.uploaded_late = 'YES'
    OR ae.uploaded_on_time_but_no_carrier_scan = 'YES'

我试过这个:

SELECT  o.order_id,
    ti.tracking_number,
    ti.created_date,
    o.order_date, 
    ae.not_uploaded, 
    ae.uploaded_late, 
    ae.uploaded_on_time_but_no_carrier_scan
FROM    orders o
JOIN    tracking_info ti ON o.order_id = ti.order_id
JOIN    april_evaluation ae ON RIGHT(o.product_id, 13) = ae.transaction_id
JOIN    (
    SELECT  tracking_number,
        MIN(created_date) AS min_created_date
    FROM    tracking_info
    GROUP BY tracking_number
    ) AS tmin
    ON ti.created_date = tmin.min_created_date
WHERE   ae.not_uploaded = 'YES'
    OR ae.uploaded_late = 'YES'
    OR ae.uploaded_on_time_but_no_carrier_scan = 'YES'

但是它返回的结果比第一个查询多。我做错了什么?

sql database postgresql inner-join
© www.soinside.com 2019 - 2024. All rights reserved.