It returning only one row of existing data of that month, required all interval 6 month
SELECT YEAR(m.dte) as vacyear,
MONTHNAME(m.dte + INTERVAL 1 month) as vacmonth,
MONTH(m.dte + INTERVAL 1 month) as vmonth,
COUNT(v.created_date) as total
FROM (SELECT DATE_ADD(NOW(), INTERVAL -12 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -11 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -10 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -9 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -8 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -7 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -6 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -5 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -4 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -3 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -2 MONTH) as dte UNION ALL
SELECT DATE_ADD(NOW(), INTERVAL -1 MONTH) as dte
) as m
LEFT JOIN tbl_team v ON v.created_date >= m.dte
AND v.created_date < m.dte + interval 1 month
WHERE m.dte >= DATE_ADD(NOW(), INTERVAL - 6 MONTH)
AND v.id IN(7,8,9)
GROUP BY vacmonth, vmonth
ORDER BY vmonth ASC