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