我目前正在尝试完成将 scd 类型 2 数据加载到维度中的查询的最后一部分。根据下面提供的数据,除了过期的旧记录和跟踪历史记录等之外,我想生成一个可以插入维度的输出。数据是这样的,我拥有属性已更改的最新记录。更改的值与 dateOfchange (即更改发生的日期)一起在 Lookup 列中找到。这个 dateOfchange 显然应该成为最新记录的 validTo 日期。
样本数据如下:
CREATE TABLE #tstDimPortfolio
(
[ID][INT] IDENTITY (1,1) NOT NULL,
[UPI] [varchar](20) NOT NULL,
[MF_CODE] [varchar](10) NULL,
[BH_Code] [varchar](10) NULL,
[CR_Code] [varchar](10) NULL,
[ValidFrom][varchar](10) NOT NULL,
[ValidTo][varchar](10) NULL,
[IsCurrent] [CHAR] (1) NULL,
[DateofChange] [varchar](10) NULL,
[LookupMF_CODE] [varchar](10) NULL,
[LookupBH_Code] [varchar](10) NULL,
[LookupCR_Code] [varchar](10) NULL,
)
INSERT INTO #tstDimPortfolio
SELECT 'B06531','B06531','','B06531','20111230',NULL,'Y','20120101','','B06531', ''
UNION ALL
SELECT 'BLI003','','BLI003','BBL_WORLD','20111230',NULL,'Y','20120102','BLI004','', ''UNION ALL
SELECT 'BLI003','','BLI003','BBL_WORLD','20111230',NULL,'Y','20120103','BLI005','', ''UNION ALL
SELECT 'BLI027','BLI027','L147','BBL_GBN','20111230',NULL,'Y','20120104','','L146', ''
有了这些数据,新的输出应该是
UPI MF_CODE BH_Code CR_Code ValidFrom ValidTo IsCurrent
_______________________________________________________________________
B06531 B06531 B06531 20111230 20120101 N
B06531 B06531 B06531 B06531 20120101 NULL Y
BLI003 BLI003 BBL_WORLD 20111230 20120102 N
BLI003 BLI004 BLI003 BBL_WORLD 20120102 20120103 N
BLI003 BLI005 BLI003 BBL_WORLD 20120103 NULL Y
BLI027 BLI027 L147 BBL_GBN 20111230 20120104 N
BLI027 BLI027 L146 BBL_GBN 20120104 NULL Y
有任何想法吗