Home Forums SQL Server 2008 T-SQL (SS2K8) Update one table rows with another table if match found RE: Update one table rows with another table if match found

  • If I understand the requirements correctly, it would look something like this:

    IF OBJECT_ID(N'tempdb..#T1') IS NOT NULL

    DROP TABLE #T1;

    IF OBJECT_ID(N'tempdb..#T2') IS NOT NULL

    DROP TABLE #T2;

    CREATE TABLE #T1 ([Number] VARCHAR(10));

    CREATE TABLE #T2

    ([OldNumber] VARCHAR(10),

    [NewNumber] VARCHAR(10));

    INSERT INTO #T1

    (Number)

    VALUES ('10'),

    ('20'),

    ('30'),

    ('40');

    INSERT INTO #T2

    (OldNumber, NewNumber)

    VALUES ('10', '15'),

    ('20', 'MISSING'),

    ('30', NULL);

    SELECT *

    FROM #T1;

    MERGE INTO #T1 AS Tgt

    USING

    (SELECT #T2.OldNumber,

    #T2.NewNumber

    FROM #T2) AS Src

    ON Tgt.Number = Src.OldNumber

    WHEN MATCHED AND Src.NewNumber IS NOT NULL

    AND Src.NewNumber != 'MISSING'

    THEN UPDATE

    SET Number = Src.NewNumber;

    SELECT *

    FROM #T1;

    Does that help?

    - Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
    Property of The Thread

    "Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon