• You can use COALESCE(): for only 4 values, it's actually clearer to me personally (ymmv) than the other method.

    SELECT

    t.id,

    COALESCE(t.field1, t.field2, t.field3, t.field4) AS field1_new,

    CASE WHEN t.field1 IS NOT NULL THEN COALESCE(t.field2, t.field3, t.field4)

    WHEN t.field2 IS NOT NULL THEN COALESCE(t.field3, t.field4)

    WHEN t.field3 IS NOT NULL THEN t.field4

    ELSE NULL END AS field2_new,

    CASE WHEN t.field1 IS NOT NULL AND t.field2 IS NOT NULL THEN COALESCE(t.field3, t.field4)

    WHEN (t.field1 IS NOT NULL AND t.field3 IS NOT NULL) OR

    (t.field2 IS NOT NULL AND t.field3 IS NOT NULL) THEN t.field4

    ELSE NULL END AS field3_new,

    CASE WHEN t.field1 IS NOT NULL AND t.field2 IS NOT NULL AND t.field3 IS NOT NULL THEN t.field4

    ELSE NULL END AS field4_new

    FROM @thedatalookslikethis t

    ORDER BY t.id

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.