0

嗨,我有以下 2 张桌子

表历史

version,   from_date             to_date                 ID   Place 
1       1900-01-01 00:00:00     2020-07-08 10:00:49     123    Delhi
2       2020-07-08 10:00:49     2199-12-31 23:59:59     123    hyderabad

table_current

version      from_date             to_date                ID     Place 
1       1900-01-01 00:00:00  2020-10-07 18:03:56        123    Chennai
2       2020-10-07 18:03:56  2020-10-09 12:28:30        123    Kolkata
3       2020-10-09 12:28:30  2199-12-31 23:59:59        123    mumbai

table_history 由一些 etl 进程 (Datastage) 加载 table_current 由不同的 etl 进程 (informatica) 加载

Datastage 即将关闭,应使用 Informatica 继续加载数据

我需要合并上述表格(table_history 已经是 prod),以使日期范围列在历史记录和当前表格之间与版本号对齐,如下所示

联合视图(预期)

版本 from_date to_date ID 地点

1       1900-01-01 00:00:00     2020-07-08 10:00:49         123    Delhi
2       2020-07-08 10:00:49     2020-10-07 18:03:56         123    hyderabad
3       2020-10-07 18:03:56     2020-10-07 18:03:56         123    Chennai
4       2020-10-07 18:03:56     2020-10-09 12:28:30         123    Kolkata
5       2020-10-09 12:28:30     2199-12-31 23:59:59         123    mumbai

帮助表示赞赏

注意:from_date 和 to_date 是由 ETL 过程驱动的 - 不是来自源代码

我正在尝试使用 Windows 功能,但没有得到想要的结果

lag(sysdate) over (partition by id order by sysdate asc) is null 
         then TIMEZONE('GMT', to_timestamp('1900-01-01 00:00:00', 'yyyy-mm-dd'))         else sysdate
      end as from_date
    , nvl(lead(sysdate) over (partition by id order by stg_load_dttm asc), TIMEZONE('GMT', to_timestamp('2199-12-31 23:59:59', 'yyyy-mm-dd HH24:MI:SS'))) as to_date

以上是在构建 table_current 的 SQL 中确定 from_date、to_date 的逻辑

4

0 回答 0