SELECT id
         , SUBSTRING(MAX(time || name) FROM 11) "name"
         , SUBSTRING(MAX(time || title) FROM 11) title
         , MAX(time) "time"
    FROM test_table
    GROUP BY id

The `FROM 11` part extracts the data (`name` or `title`) from the concatenated aggregate values. First 10 characters is the date (`time` column).