• One way to go:

    DECLARE @T TABLE (ID INT PRIMARY KEY, SentDate VARCHAR(10), ReceivedDate VARCHAR(10), CreatedDate VARCHAR(10))

    INSERT INTO

    @T

    VALUES

    (1, NULL, '2-11-2012', NULL),

    (2, '22-10-2012', NULL, '2-12-2012'),

    (3, '8-8-2012', NULL, NULL),

    (4, NULL, NULL, '25-12-2012'),

    (5, '7-11-2012', '1-8-2012','5-1-2012')

    SET DATEFORMAT dmy

    SELECT

    ID, MAX(CAST(AnyDate AS DATE)) -- Select the maximum date out of the three splitted rows

    FROM

    @T

    CROSS APPLY

    (

    -- Split row into three rows, each row containing a different date

    VALUES (SentDate), (ReceivedDate), (CreatedDate)

    ) CA(AnyDate)

    GROUP BY

    ID

    And I am totally agreeing with GSquared. I took the risk.

    Edit: Added cast to date