ゆっくりと変化するディメンション DIM_Object の +1 カウンターが必要です。テーブル PMEObject テーブルのレコードが変更されるたびに、DIM_Object.Versie を 1 ずつ増やします。
コードに関するすべてが正常に動作し、これもエラーなしで実行できます。ただし、「+1 Versie」がある場合は、実際にカウントして、+1 を追加する必要がある実際の数を示す過去の行を参照する必要があります。古いレコードを正しく参照する方法がわかりません。
INSERT INTO DIM_Object
SELECT ObjectId
, Name
, Eff_Date
, End_Date
, Current_Flag
, Versie
FROM ( MERGE DIM_Object CM
USING PMEOBJECT CS
ON ( CM.ObjectId = CS.ObjectId )
WHEN NOT MATCHED
THEN
INSERT VALUES
( CS.ObjectId
, CS.Name
, CONVERT(CHAR(10), GETDATE() - 1, 101)
, '12/31/2199'
, 'y'
, '1'
)
WHEN MATCHED AND CM.Current_Flag = 'y'
AND ( CM.Name <> CS.Name )
THEN
UPDATE SET
CM.Current_Flag = 'n' ,
CM.End_date = CONVERT(CHAR(10), GETDATE() - 2, 101)
OUTPUT
$Action Action_Out
, CS.ObjectId
, CS.Name
, CONVERT(CHAR(10), GETDATE() - 1, 101) Eff_Date
, '12/31/2199' End_Date
, 'y' Current_Flag
, +1 Versie) AS MERGE_OUT
WHERE MERGE_OUT.Action_Out = 'UPDATE';
「+1 Versie」を配置した場所に、DIM_Object.Versie の以前の数に基づいて実際に累積させたいと考えています。現在のレコードには NULL のみが表示されると思われるため、現在は「1」のままです。
あなたはなにか考えはありますか?
敬具、
広告