SELECT userName ,
MAX(CASE
reportDate WHEN '2016-07-18'
THEN `data` ELSE 0
END ) data_18,
MAX(CASE reportDate
WHEN '2016-07-19' THEN `data`
ELSE 0 END ) data_19,
MAX(CASE reportDate
WHEN '2016-07-20' THEN `data`
ELSE 0 END ) data_20
FROM test