2014-04-29 3 views
0

J'ai une table SQL appelée Employee dans laquelle j'ai des colonnes EmployeeID, Status et DepartmentID. Maintenant, j'ai été assigné à la tâche de créer un rapport tabulaire où j'ai besoin de compter le nombre total d'employés pour un département, le nombre d'employés qui sont actifs (Statut), et DepartmentID. Obtenir le nombre total d'employés et le DepartmentID correspondant est simple avec une clause Group By.Regrouper par sur la même colonne dans la sous-requête

Select count(*) as 'Total Employees',DepartmentID from Employees 
Group By DepartmentID 

Comment obtenir le nombre d'employés avec un statut particulier pour le même DepartmentID que la requête externe? S'il vous plaît laissez-moi savoir si vous voulez plus de précisions sur le problème.

Répondre

1

Si vous avez la colonne Status avec des valeurs actif, pas besoin de requête externe

Select count(*) as 'Total Employees', 
      SUM(CASE WHEN status='Active' THEN 1 ELSE 0 END) as TotalActiveEmployees, 
      DepartmentID 
    from Employees 
    Group By DepartmentID 
0

Essayez celui-ci.

Select count(*) as 'Total Employees', 
COUNT(CASE WHEN status='Active' THEN 1 ELSE 0 END) as TotalActiveEmployees, 
DepartmentID 
from Employees 
Group By DepartmentID 
Questions connexes