Вы можете сделать это несколькими способами, но я думаю, что вы ищете способ с помощью курсора.
Курсор - это своего рода указатель в таблице, который при увеличении указывает на следующую запись. (это более или менее аналогично циклу «для следующего»)
Чтобы использовать курсор, вы можете сделать следующее:
-- DECLARE the cursor
DECLARE CUR CURSOR FAST_FORWARD READ_ONLY FOR SELECT id, siteId, contract FROM #mod_contract
-- DECLARE some variables to store the values in
DECLARE @varId int
DECLARE @varSiteId int
DECLARE @varContract varchar(25)
-- Use the cursor
OPEN CUR
FETCH NEXT FROM CUR INTO @varId, @varSiteId, @varContract
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE dbo.table1
SET contract = @varSiteId + @varContract -- It might not work due to the different types
WHERE id = @varId
FETCH NEXT FROM CUR INTO @varId, @varSiteId, @varContract
END
CLOSE CUR
DEALLOCATE CUR
Это не самый эффективный способ сделать это, но я думаю, это то, что вы ищете.
Надеюсь, это поможет.