現在、scd タイプ 2 データをディメンションにロードするクエリの最後の部分を完了しようとしています。以下に示すデータに基づいて、古いレコードの期限切れや履歴の追跡などに加えて、ディメンションに挿入できる出力を生成したいと考えています。データは、属性が変更された最新のレコードを持っているようなものです。変更された値は、変更が行われた日付、つまり dateOfchange とともに Lookup 列に表示されます。この dateOfchange は、明らかに最新のレコードの有効な日付になるはずです。
サンプル データは次のとおりです。
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
何か案は