我想要一个 +1 计数器,用于我的缓慢变化的维度 DIM_Object。每次当 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 数量实际累积。现在它只会保持“1”,因为我猜它只在当前记录中看到 NULL。
你有什么想法?
亲切的问候,
广告