• It seems that you have a poor design and that's making everyone confused. You should review what's going on here.

    That said, this might help you:

    CREATE TABLE SampleData(

    idint,

    val1varchar(50),

    val2 varchar(50));

    INSERT INTO SampleData

    VALUES

    (1,'red', NULL),

    (1,'blue',NULL),

    (1,'green','round'),

    (1,NULL,'square');

    WITH val1s AS(

    SELECT id,

    val1,

    ROW_NUMBER() OVER(PARTITION BY id ORDER BY val1 DESC) rn

    FROM SampleData

    WHERE val1 IS NOT NULL

    ),

    val2s AS(

    SELECT id,

    val2,

    ROW_NUMBER() OVER(PARTITION BY id ORDER BY val2 DESC) rn

    FROM SampleData

    WHERE val2 IS NOT NULL

    )

    SELECT ISNULL( v1.id, v2.id) id,

    v1.val1,

    v2.val2

    FROM val1s v1

    FULL

    JOIN val2s v2 ON v1.id = v2.id AND v1.rn = v2.rn

    GO

    DROP TABLE SampleData

    Next time, please post sample data and expected results the same way I did here to prevent us from having to do additional work (we're not paid for helping).

    Luis C.
    General Disclaimer:
    Are you seriously taking the advice and code from someone from the internet without testing it? Do you at least understand it? Or can it easily kill your server?

    How to post data/code on a forum to get the best help: Option 1 / Option 2