Set of datetime versioned rows, how to build the most up to date row
Something like this should work if you specify the dog_id and version_stamp. It's going to SELECT the top dog_name and dog_color ORDER BY the latest version_stamp. Then you roll those up based on dog_id using MAX().

Fiddle example.

SELECT
   a.dog_id
  ,MAX(a.version_stamp) AS 'Version Stamp'
  ,MAX(a.dog_name) AS 'Dog Name'
  ,MAX(a.dog_color) AS 'Dog Color'
FROM 
   (
    SELECT
      *
    FROM dogs
    WHERE version_stamp &lt;= '2099-12-12 12:12:12'
    AND dog_id = 19850
    AND dog_name IS NOT NULL
    UNION
    SELECT
      *
    FROM dogs
    WHERE version_stamp &lt;= '2099-12-12 12:12:12'
    AND dog_id = 19850
    AND dog_name IS NULL
    ORDER BY version_stamp DESC
    LIMIT 2 
   ) a
GROUP BY 
   a.dog_id




DOG_ID  VERSION STAMP   DOG NAME    DOG COLOR

19850   September, 27 2014 02:16:41+0000    Dieter  brown