2012-05-27 4 views
0

Я ранее создал эту команду SELECT в SQL Server, которая должна подсчитывать, сколько сотрудников каждого отдела содержит. Это то, что я использовал:SQL Server SELECT with Count, Group By, Where and Join

SELECT Departments.Description AS [Department], COUNT(Employees.ID) AS [Employees] 
FROM Employees 
RIGHT JOIN Departments ON 
Employees.DepartmentID = Departments.ID 
GROUP BY Departments.Description 

И это прекрасно работает (также показывает Департамент, даже если нет работников).

Теперь я хочу, чтобы рассчитывать только в настоящее время работает сотрудников, с помощью следующего фильтра:

WHERE Employees.JobEndDate = null 

И я пытался это сделать:

SELECT Departments.Description AS [Department], COUNT(Employees.ID) AS [Employees] 
FROM Employees 
RIGHT JOIN Departments ON 
Employees.DepartmentID = Departments.ID 
WHERE Employees.JobEndDate = NULL 
GROUP BY Departments.Description 

Но теперь я не получаю никаких результатов. Любая идея, что я делаю неправильно?

Thanks :) Mitsy.

ответ

4

Testing если поле возвращаемое значение NULL не выполняется посредством равного = знака, но с IS оператора

= null 

не работает, вместо того, чтобы написать:

Employees.JobEndDate IS NULL 
+0

о мой. что на самом деле сработало. Я не могу в это поверить :) спасибо !!! – user1268741

0
SELECT Departments.Description AS [Department], COUNT(Employees.ID) AS [Employees] FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.ID WHERE Employees.JobEndDate = IS NULL GROUP BY Departments.Description