SELECT TO_CHAR(months.add_months(TRUNC(SYSDATE,'MM'), LEVEL-1), 'YYYY-MM') AS month,
COUNT(*) AS employee_count
FROM emp
CONNECT BY LEVEL <= months_between(TRUNC(SYSDATE,'MM'),TRUNC(MIN(hire_date),'MM'))+1
AND PRIOR sys_guid() IS NOT NULL
AND hire_date <= add_months(TRUNC(SYSDATE,'MM'), LEVEL-1)
AND (leave_date IS NULL OR leave_date > add_months(TRUNC(SYSDATE,'MM'), LEVEL-1))
GROUP BY TO_CHAR(months.add_months(TRUNC(SYSDATE,'MM'), LEVEL-1), 'YYYY-MM')
ORDER BY month;