2014-11-20 13 views
5

Tôi có cấu trúc bảng sau đây cũng tôi có đề cập đến sản lượng dự kiến ​​của tôi hãy giúp tôi với truy vấn như tôi không biết nhiều về truy vấn SQLhiển thị trong SQL Server

Bảng 1: Thể loại

Name  CatId 
A   1 
B   2 
C   3 

Bảng 2: Chi tiết Emp

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

cho đến nay tôi đã cố gắng để có được tất cả kết quả với:

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 

Nhưng vấn đề của tôi là, tôi cũng muốn kết quả tóm tắt sẽ được hiển thị

Dự kiến ​​Tóm tắt Output:

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

Trong tương lai nếu bạn hỏi một câu hỏi SQL với mã SQL, thêm các thẻ SQL đầu tiên (chứ không phải C#). Cách làm nổi bật cú pháp theo cách này sẽ là SQL cụ thể hơn là C# cụ thể. – Tanner

Trả lời

8

Tôi nghĩ rằng bạn có thể sử dụng LEFT JOIN, GROUP BYCOUNT như sau:

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

cảm ơn nó đã hoạt động !!!!! – Nilesh

+0

Vui lòng không sử dụng '=' cho Bí danh – Rajesh

+1

@Rajesh Tại sao không? Theo tôi, đó là cách rõ ràng nhất khi sử dụng bí danh cột. [Bài viết này] (http://sqlblog.com/blogs/aaron_bertrand/archive/2012/01/23/bad-habits-to-kick-using-as-instead-of-for-column-aliases.aspx) khá nhiều tiền lên ý kiến ​​của tôi về vấn đề này, và thẳng thắn, có rất ít Aaron Bertrand đã viết rằng tôi không đồng ý với ... – GarethD

1

TRY NÀY:

SELECT A.NAME, 
(SELECT COUNT(*) FROM #EMP B WHERE A.CATID = B.CATID) AS COUNT 
FROM #TEMP A 
Các vấn đề liên quan