【问题标题】:check two timestamp in oracle sql检查oracle sql中的两个时间戳
【发布时间】:2017-03-01 06:48:52
【问题描述】:

我正在尝试加入三个表,我想在其中获取货件 ID,其中表 2 中的时间(货件的日期和小时数)应小于表 3。 Change_Date 格式为

select shipment_id from table1
left join table2 on table1.shipment_id=table2.shipment_id
left join table3 on table2.shipment_id=table3.shipment_id and table2.Code=table3.Code
where table2.change_date<table3.change_date

数据如下

表1

shipment_id
123456

表2

shipment_id--------------Change_Date-------------------------Code
123456------19-JAN-17 09.54.07.000000 AM----------------32
123456------19-JAN-17 10.54.07.000000 PM----------------51

表3

shipment_id--------------Change_Date-------------------------Code
123456------19-JAN-17 12.54.07.000000 PM----------------32
123456------19-JAN-17 07.54.07.000000 AM----------------32
123456------20-JAN-17 09.54.10.000000 AM----------------32

所以我需要输出为

shipemnt_id-------------Change_Date
123456--------19-JAN-17 12.54.07.000000 PM
123456--------20-JAN-17 09.54.10.000000 AM

请帮忙

【问题讨论】:

    标签: sql oracle timestamp


    【解决方案1】:

    如果我正确理解您的要求,您希望在Table3 中保留给定货件的记录,其更改日期大于出现在Table2 中的同一货件的最近更改日期.如果是这样,那么我们可以创建一个子查询,在Table2 中标识每次发货的最新更改日期,然后使用它从Table3 中删除我们不希望出现在结果集中的记录。

    SELECT t1.shipment_id,
           t3.change_date
    FROM table1 t1
    LEFT JOIN Table3 t3
        ON t1.shipment_id = t3.shipment_id
    INNER JOIN
    (
        SELECT shipment_id, MAX(change_date) AS max_change_date
        FROM table2
        GROUP BY shipment_id
    ) t2
        ON t3.shipment_id = t2.shipment_id AND
           t3.change_date > t2.max_change_date
    

    【讨论】:

      猜你喜欢
      • 2023-02-14
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 2021-09-09
      • 1970-01-01
      • 2017-07-10
      • 2015-07-18
      • 2022-01-23
      相关资源
      最近更新 更多