我正在尝试完成将scd类型2数据加载到维度的查询的最后部分。 根据下面提供的数据,我想产生一个输出,除了 到期的旧记录和追踪历史记录等之外,还可以插入到一个维度中。数据是这样的,使得我拥有最新的记录,其中的属性发生了变化。查找列和dateOfchange(即更改发生的日期)中找到更改的值。这个dateOfchange显然应该成为最新记录的validTo日期。SCD Type 2的T-SQL语法
样本数据如下:
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
任何想法
@米奇小麦首先它在T-SQL来完成的。就像我们通过存储过程所做的那样,我们没有ssis。我试图用以下方法将表加入自己: – 2012-02-14 06:28:54
@Mitch小麦首先它必须在t-sql中完成。就像我们通过存储过程所做的那样,我们没有ssis。我已经尝试将upi和dateOfchange
2012-02-14 06:37:58
当我说“你有什么尝试?”我的意思是告诉我们你已经写了什么..... – 2012-02-14 08:16:48