如何为历史和当前数据生成数据?

时间:2019-06-12 05:14:55

标签: sql

我需要从已存储scd的现有表生成报告。

假设我有以下表格:

table1

!pip install  --upgrade bert

table2

| Pid |               eff_dt |               exp_dt |
|-----|----------------------|----------------------|
| 489 | 2018-11-02T05:27:12Z | 9999-12-31T23:59:59Z |
| 546 | 2018-11-02T05:27:12Z | 2018-12-02T05:27:12Z |
| 546 | 2018-12-02T05:27:12Z | 9999-12-31T23:59:59Z |

预期输出为:

| Pid |  val |               eff_dt |               exp_dt |
|-----|------|----------------------|----------------------|
| 489 | JD7G | 2018-11-02T05:24:16Z | 2018-11-09T05:40:47Z |
| 489 |  JD7 | 2018-11-09T05:40:47Z | 9999-12-31T23:59:59Z |
| 546 | TR56 | 2018-11-09T05:40:47Z | 9999-12-31T23:59:59Z |

2 个答案:

答案 0 :(得分:2)

您的问题可能更具体。在mysql中的任何方式都可以运行简单的脚本:

Select table1.Pid, table2.val, table1.eff_dt, table1.exp_dt 
From table1 Join table2 
On(table1.Pid=table2.Pid)

答案 1 :(得分:1)

在您的帖子中保持eff_dt和exp_dt的逻辑不清楚。无论如何,我都保留了您的table1中的两个值。 (适用于您标记的大多数数据库;))

SELECT DISTINCT T2.Pid,T2.val,T1.eff_dt,T1.exp_dt 
FROM table2 T2 
INNER JOIN table1 T1 ON T2.pid = T1.Pid

输出如下-

Pid val     eff_dt                      exp_dt
489 JD7     2018-11-02 05:27:12.049     9999-12-31 23:59:59.000
489 JD7G    2018-11-02 05:27:12.049     9999-12-31 23:59:59.000
546 TR56    2018-11-02 05:27:12.049     2018-12-02 05:27:12.049
546 TR56    2018-12-02 05:27:12.049     9999-12-31 23:59:59.000

您还可以在Fiddle

中查看结果