• This should help get you going:CREATE TABLE #myTable (column1 int, column2 varchar(256));

    go

    CREATE TABLE #myTable_hist (column1 int, column2 varchar(256), HistCheck INT);

    GO

    INSERT INTO #myTable VALUES (1, 'test');

    INSERT INTO #myTable VALUES (2, 'test');

    INSERT #myTable_hist (column1, column2, HistCheck)

    Select column1, column2, CHECKSUM(column2) from #myTable

    -- Add new row

    INSERT INTO #myTable VALUES (3, 'test');

    WITH cte

    AS

    (

    SELECT *, CHECKSUM(Column2) AS CheckVal

    FROM #myTable

    )

    MERGE

    #myTable_hist AS Target

    USING

    cte AS Source

    ON Target.column1 = Source.column1

    WHEN MATCHED AND (Target.HistCheck <> Source.CheckVal) THEN

    UPDATE SET

    Target.Column2 = Source.Column2,

    Target.HistCheck = Source.CheckVal

    WHEN NOT MATCHED THEN

    INSERT (column1, column2, HistCheck)

    VALUES (Source.column1, Source.column2, Source.CheckVal);