У меня есть оператор SQL MERGE, который выполняет UPDATE, если значение существует (и INSERT, если оно существует). Я хотел бы записать последние несколько «исторических» значений в строке, когда произойдет ОБНОВЛЕНИЕ, примерно так:
MERGE into desttable as dest
USING sourcetable as src
on src.ref = dest.ref
WHEN MATCHED THEN
UPDATE SET dest.oldvalue3=dest.oldvalue2,
dest.oldvalue2=dest.oldvalue1,
dest.oldvalue1=dest.value,
dest.value=src.newvalue
WHEN NOT MATCHED THEN
INSERT ...
... так что, по существу, существующее «значение» перемешивается до «oldvalue1», «oldvalue1» становится «oldvalue2» и т. Д. Однако, когда я запускаю это, каждый столбец получает значение «value» - оператор UPDATE очевидно устанавливает все поля одновременно. Есть ли способ добиться того, что я пытаюсь сделать?