需要带日期链逻辑的SQL

时间:2017-05-20 05:59:37

标签: sql oracle exadata

我想编写一个SQL(不是一个过程而是SQL)来生成输出,如表t1中的表t2所示。这需要在表t1和t2之间进行一些数据验证。我想根据这个逻辑从表t1中提取数据,并希望将它与表t2进行比较

我有两张桌子t1& T2。 T1有这样的数据:

Item Id   Date           Item code
A         01/01/2017     10
A         02/01/2017     10
A         03/01/2017     10
...
A         15/02/2017     11
A         23/02/2017     11
...
A         25/06/2017     12

表2中的数据以维持日期链接的方式进行:

Item ID   Start Date  End date   Item Code
A         20170101    20170214   10
A         20170215    20170624   11
A         20170625    99991231   12

使用的数据库是Oracle Exadata。

1 个答案:

答案 0 :(得分:0)

我认为StartDate和EndDate是与表中的item_code关联的最小和最大日期。在这种情况下 - 这是从t1获得t2的一种方法:

select
    (
        select min(t1.item_date)
        from t1
        where t1.item_code = sel1.item_code
    ) min_date,
    (
        select max(t1.item_date)
        from t1
        where t1.item_code = sel1.item_code
    ) max_date,
    sel1.item_code
from (
    select distinct item_code
    from t1
) sel1