I'm doing it off the top of my head, but it would look something like this. I'm assuming you have a custom property for "NodeType" (firewall, Proxy, etc). If not, you'll have to group by machine type or something.
select fakeid='1', s1.firewallcount, s2.proxycount, s2.....(etc)
join (select fakeid='1', Nodes.Department, COUNT(Nodes.NodeID) as firewallcount
from Nodes
where Nodes.NodeType = 'Firewall' ) s1 on fakeid = s1.fakeid
join (select fakeid='1', Nodes.Department, COUNT(Nodes.NodeID) as proxycount
from Nodes
where Nodes.NodeType = 'Proxy' ) s2 on fakeid = s2.fakeid
join (select...
(etc)