• CROSS APPLY VALUES[/url] was made for this;

    ;WITH Mysample (Record_id, Col1, Col2, Col3, Col4, Col5) AS (

    SELECT 101, 'A', 'A', 'B', 'A', 'A' UNION ALL

    SELECT 102, 'B', 'B', NULL, NULL, 'B' UNION ALL

    SELECT 103, 'C', 'C', 'C', NULL, 'C' UNION ALL

    SELECT 104, 'D', 'C', 'D', 'D', 'D'

    )

    SELECT Record_id, Newcol

    FROM Mysample

    CROSS APPLY (

    SELECT Newcol = CASE WHEN MAX(Newcol) = MIN(Newcol) THEN MAX(Newcol) ELSE NULL END

    FROM (VALUES (Col1), (Col2), (Col3), (Col4), (Col5)) X (Newcol)

    ) d

    WHERE Newcol IS NOT NULL


    [font="Arial"]Low-hanging fruit picker and defender of the moggies[/font]

    For better assistance in answering your questions, please read this[/url].


    Understanding and using APPLY, (I)[/url] and (II)[/url] Paul White[/url]

    Hidden RBAR: Triangular Joins[/url] / The "Numbers" or "Tally" Table: What it is and how it replaces a loop[/url] Jeff Moden[/url]