2014-11-20 15 views
5

Mam następujące struktury tabeli też muszę wspomnieć mój oczekiwana produkcja proszę mi pomóc z zapytaniem jak nie wiem zbyt wiele o zapytaniu SQLwyświetlana Podsumowanie SQL Server

Tabela 1: Kategoria

Name  CatId 
A   1 
B   2 
C   3 

Tabela 2: Emp Szczegóły

FName  Id Dob   CatId 
Pratik  1 1958-04-06  2 
Praveen  3 1972-05-12  1 
Nilesh  2 1990-12-12  2 

do tej pory starałem się dostać wszystko wynikać z:

SELECT A.Code,A.EmpName,A.DOB,B.cname 
FROM EMPMASTER A 
JOIN CATMASTER B ON A.cCode = B.ccode AND A.Compcode = B.CompCode 
WHERE A.compcode = 'C0001' AND month(A.DOB) >= 1 
     AND MONTH(A.DOB) <= 12 AND A.termflag='L' 
ORDER BY A.DOB 

Ale mój problem jest, chcę również podsumowanie wyników ma być wyświetlany

Oczekiwany Podsumowanie wyjściowa:

Grouping   No Of Employees 
A      1 
B      2 
C      0 
+0

W przyszłości, jeśli zadać pytanie SQL z kodu SQL, dodać tagi SQL pierwszy (zamiast C#). W ten sposób podświetlanie składni będzie specyficzne dla SQL, a nie specyficzne dla C#. – Tanner

Odpowiedz

8

myślę, że można użyć LEFT JOIN, GROUP BY i COUNT w następujący sposób:

SELECT [Grouping] = c.Name, 
     [No Of Employees] = COUNT(e.ID) 
FROM Category AS c 
     LEFT JOIN EmpDetails AS e 
      ON e.CatId = c.CatId 
GROUP BY c.Name; 
+0

dziękuję to działało !!!!! – Nilesh

+0

Uprzejmie nie używaj '=' dla Aliasu – Rajesh

+1

@Rajesh Dlaczego nie? Moim zdaniem jest to najbardziej przejrzysty sposób korzystania z aliasów kolumn. [Ten artykuł] (http://sqlblog.com/blogs/aaron_bertrand/archive/2012/01/23/bad-habits-to-kick-using-as-instead-of-for-column-aliases.aspx) pretty bardzo podsumowuje moje opinie na ten temat, i szczerze mówiąc, jest bardzo mało, że Aaron Bertrand napisał, że nie zgadzam się z ... – GarethD

1

TRY TO:

SELECT A.NAME, 
(SELECT COUNT(*) FROM #EMP B WHERE A.CATID = B.CATID) AS COUNT 
FROM #TEMP A