0

我想编写一个 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。

4

1 回答 1

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
于 2017-05-20T07:31:31.147 回答