跟踪关键列的属性更改并填充到临时表中

时间:2017-05-30 09:10:26

标签: sql oracle

我有一个带有scdType2的employee表作为laoding技术(Empid是键列)。 我需要跟踪关键列的属性更改(Reporting_To)并填充到临时表中。

在Employee表中使用Empid作为键列

的现有rec
Empid |Project | Reporting_To |Valid_From | Valid_Upto | Creation_Date | Modification_Date
------------------------------------------------------------------------
123456 |ABC | 123 |01-Jan-2017 | 31-Dec-9999 | 01-Jan-2017

作为增量版(2017年5月28日的文件)的一部分,我获得了与Empid相同的记录:

Empid | Project | Reporting_To | Valid_From | Valid_Upto
--------------------------------------------------------
123456 | DEF | 123 |28-May-2017 | 31-Dec-9999

因此,我的Employee表将使用Scd2逻辑更新,如下所示:

Empid | Project | Reporting_To | Valid_From | Valid_Upto | Creation_Date | Modification_Date
--------------------------------------------------------------------------------------------
123456 |ABC | 123 | 01-Jan-2017 | 27-May-2017 | 01-Jan-2017 | 28-May-2017 
123456 |DEF | 123 | 28-May-2017 | 31-Dec-9999 | 28-May-2017

这里更改Project,因此Scd2。 但由于Reporting_To中没有更新,因此不会进入临时表

作为增量版(2017年5月29日的文件)的一部分,我获得了与Empid相同的记录:

Empid |Project | Reporting_To | Valid_From | Valid_Upto
-------------------------------------------------------
123456 |DEF | 589 | 30-May-2017 | 31-Dec-9999

因此,我的Employee表将使用Scd2逻辑更新,如下所示:

Empid | Project | Reporting_To |Valid_From | Valid_Upto | Creation_Date | Modification_Date
------------------------------------------------------------------------
123456 |ABC | 123 | 01-Jan-2017 |27-May-2017 | 01-Jan-2017 | 28-May-2017
123456 |DEF | 123 | 28-May-2017 |29-May-2017 |28-May-2017 |29-May-2017
123456 |DEF | 589 | 30-May-2017 |31-Dec-9999 | 29-May-2017

由于Reporting_To中有更新,临时表中会有一个条目:

Empid |Reporting_To |Valid_From |Valid_Upto
-------------------------------------------
123456 | 589 | 30-May-2017 | 31-Dec-9999

请帮我查询在Reporting_To中跟踪更改,从员工表中挑选所需的值并将其加载到临时表中

1 个答案:

答案 0 :(得分:0)

您可以通过Empid和Reporting_To使用select with group

select * from Employee group by Empid, Reporting_To;