通常、すでに挿入されている行を更新するのではなくComputerReport、正しい決定済みの行を挿入する必要があります。SFID
INSERT INTO ComputerReport
(SFID, CrComputerName, CrLastUpdatedBy) -- add other columns as neeeded 
SELECT SFID, 'JAMI-HP', 'JAMIE-HP\JAMIE'
FROM SoftwareReport
ComputerReportテーブルにまだ価値のあるものが含まれていない場合は、テーブルを切り捨てて上記の挿入を行うことができます。
それ以外の場合は、各テーブルを追跡するカーソルが必要であり、カーソル位置の最初のテーブルSFIDの値に従って、カーソル位置の 2 番目のテーブルに設定します。SFID
理想的な状況では、行を作成したばかりで、どちらのテーブルにもギャップがなく、両方に同じ数の行が含まれているため、単純に次のように記述できます。
UPDATE ComputerReport 
SET SFID = CRID
しかし、一般的なケースでは、より複雑なスクリプトに頼る必要があります。
DECLARE @sfid, @crid
DECLARE sfcursor READONLY
FOR SELECT SFID
    FROM SoftwareReport
    WHERE SFName IS NOT NULL
    ORDER BY SFID ASC;
DECLARE crcursor
FOR SELECT CRID
    FROM  ComputerReport
    -- WHERE SFID IS NULL
    ORDER BY CRID ASC
FOR UPDATE SFID;
OPEN sfcursor;
OPEN crcursor;
FETCH NEXT FROM sfcursor INTO @sfid;
FETCH NEXT FROM crcursor INTO @crid;
-- update for each rows until we reach the end of either cursor
WHILE @@FETCH_STATUS = 0
     BEGIN
     UPDATE crcursor SET SFID = @sfid;
     FETCH NEXT FROM sfcursor INTO @sfid
     FETCH NEXT FROM crcursor INTO @crid
     END
-- if there are remaining rows in sfcursor, insert new rows in ComputerReport
FETCH RELATIVE 0 FROM sfcursor INTO @sfid
WHILE @@FETCH_STATUS = 0
    BEGIN
    INSERT INTO ComputerReport (SFID) -- you should add the other columns here as needed
    VALUES (@sfid);
    FETCH NEXT FROM sfcursor INTO @sfid
    END
CLOSE crcursor
CLOSE sfcursor
DEALLOCATE sfcursor
DEALLOCATE crcursor
スクリプトで示されているように、必要な列と値をINSERT使用して余分な行のクエリを修正する必要があります。ComputerReport
カーソル ベースのスクリプトは、通常の (セット ベースの) クエリに比べて遅いことに注意してください。参考文献: