Well ... "de" doesn't exist:
(select min(count(de.emp_no))
And GROUP BY needs to precede HAVING:
having count(dt.emp_no)=
...
group by d.dept_name;
But why so complicated? A simple JOIN will do it:
SELECT TOP 2 d.DeptNo, d.DeptName, de.EmpPerDept
FROM Departments d
JOIN (
SELECT DeptNo, COUNT(EmpNo) AS EmpPerDept
FROM DeptEmp
GROUP BY DeptNo) de
ON de.DeptNo = d.DeptNo
ORDER BY EmpPerDept ASC