Это не работает, потому что вы группируетесь как на ID
, так и на Email
. Каждая строка имеет различное значение для ID
и, следовательно, несколько строк для каждого адреса электронной почты (по одной для каждого идентификатора).
Однако я всегда предпочитаю перекрестную таблицу оператору PIVOT
. Его можно переносить между диалектами, и он менее жесткий:
SELECT Email,
COUNT(CASE Department WHEN 'D1' THEN 1 END) AS D1,
COUNT(CASE Department WHEN 'D2' THEN 1 END) AS D2,
COUNT(CASE Department WHEN 'D3' THEN 1 END) AS D3,
COUNT(CASE Department WHEN 'D4' THEN 1 END) AS D4
FROM dbo.YourTable YT
GROUP BY Email;