Sql 如何为历史和当前数据生成数据?
我需要从存储了scd的现有表生成一个报告 假设我有以下表格: 表1Sql 如何为历史和当前数据生成数据?,sql,Sql,我需要从存储了scd的现有表生成一个报告 假设我有以下表格: 表1 | 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 |
| 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 |
表2
| 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 |
预期产出为:
| Pid | val | eff_dt | exp_dt |
|-----|------|----------------------|----------------------|
| 489 | JD7G | 2018-11-02T05:27:12Z | 9999-12-31T23:59:59Z |
| 489 | JD7 | 2018-11-02T05:27:12Z | 9999-12-31T23:59:59Z |
| 546 | TR56 | 2018-11-02T05:27:12Z | 2018-12-02T05:27:12Z |
| 546 | TR56 | 2018-12-02T05:27:12Z | 9999-12-31T23:59:59Z |
你的问题可以更具体一些。在
mysql
中,您可以通过任何方式运行以下简单脚本:
Select table1.Pid, table2.val, table1.eff_dt, table1.exp_dt
From table1 Join table2
On(table1.Pid=table2.Pid)
在你的帖子中,保持eff_dt&exp_dt的逻辑并不那么清楚。无论如何,我保留了表1中的两个值。(适用于您标记的大多数数据库;)) 输出如下所示-
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
您也可以在中检查结果。请解释保留eff_日期和exp_日期的逻辑,并标记相应的数据库,而不是标记多个数据库。@GaneshDogiparthi。我删除了不一致的数据库标记。仅使用实际使用的数据库进行标记。
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