• If I've seen correctly through your illogical naming convention and the fact that your column headings are in the wrong order in your desired results, this should work.  But only if you've posted on the wrong forum and you're not actually using SQL Server 2008.

    WITH LatestDates AS (
        SELECT
             year
        ,    name
        ,    last_active
        ,    ROW_NUMBER() OVER (PARTITION BY name ORDER BY year DESC) AS YearNo
        ,    ROW_NUMBER() OVER (PARTITION BY name ORDER BY last_active, year DESC) AS StatusNo
        FROM latest_value
        )
    , LatestActive AS (
        SELECT
             year
        ,    name
        ,    last_active AS Status
        ,    YearNo
        ,    FIRST_VALUE(year) OVER (PARTITION BY name ORDER BY StatusNo ASC) AS last_active
        FROM LatestDates
        )
    SELECT
         year
    ,    name
    ,    Status
    ,    last_active
    FROM LatestActive
    WHERE YearNo = 1;

    John