SQL Group incluindo linhas vazias
Para fins desta pergunta, vamos supor que esta estrutura de tabela:
People:
PersonID int PK
Name varchar(50)
Place int NULL FK -> Places.PlaceID
MovedIn datetime
Places:
PlaceID int PK
Name varchar(50)
Quero determinar quantas pessoas vivem em cada local:
SELECT pla.PlaceID, COUNT(*)
FROM Places AS pla
LEFT JOIN People as peo ON peo.PlaceID = pla.PlaceID
GROUP BY pla.PlaceID
Esta consulta omitirá lugares que não têm pessoas morando lá. Existe alguma maneira de fazê-lo contar 0?
(Estou direcionando o SQL Server 2005, com a menor chance de isso ser importante)
EDIT: Aqui está minha consulta real (anônima), depois de tentar adaptar a solução de Steve:
SELECT
ft.FooTypeID, COUNT(f.FooID)
FROM FooType as ft
LEFT OUTER JOIN Foo f ON ft.FooTypeID = f.FooTypeID
LEFT JOIN FooConfig fc ON ft.NotificationConfigID = fc.FooConfigID
WHERE
DateDiff(day, GetDate(), f.Date) > 0 AND
DateDiff(day, GetDate(), f.Date) < fc.Days
GROUP BY ft.FooTypeID
(A tradução entre o meu exemplo inicial e o seguinte é: Foo -> Pessoas, FooType -> Lugares, FooConfig -> Uma terceira tabela, para diversão extra) Posso fazer isso funcionar com a solução do Fosco, mas eu prefiro o de Steve.