Try this, it will give you a start.
SELECT DeptName
, [2001]
, [2002]
, [2003]
, [All]
FROM (
SELECT DeptName
, startyear = isnull(cast(year(StartDate) AS CHAR(4)), 'All')
, Cnt = Count(empid)
FROM StaffHistory
GROUP BY DeptName
, year(StartDate)
WITH rollup
) src
pivot(sum(Cnt) FOR startyear IN (
[2001]
, [2002]
, [2003]
, [All]
)) pvt
WHERE DeptName IS NOT NULL
Sam Vanga
http://SamuelVanga.com