有人可以告诉我如何获得在两个表之间使用MSSQL的正确数据结果,如下所示
**Person_Table** **Departemnt_Table**
=========== ================
person_id depatment_id
age department name
gender
department_id
Run Code Online (Sandbox Code Playgroud)
而且,我希望得到以下列的结果:
Department Names,
Number under 20 aged Males in each department,
number of under 20 aged Females in each department,
total number of Males in each department,
total number of Females in each department and,
Total number of Persons in each department
Run Code Online (Sandbox Code Playgroud)
示例结果应该如下所示
DepartmentName|(Under20)Male|(Under20)Female|Total(M)| Total(F)| Grand Total
Department1 | 1 | 3 | 1 | 3 | 4
Department2 | 3 | 1 | 15 | 1 | 16
Department3 | 0 | 0 | 0 | 0 | 0
Run Code Online (Sandbox Code Playgroud)
您需要使用聚合函数来使用GROUP By子句.
SELECT DT.DepartmentName,
SUM(CASE WHEN PT.age < 20 AND PT.gender='MALE' THEN 1 ELSE 0 END) As [(Under20)Male]
,SUM(CASE WHEN PT.age < 20 AND PT.gender='FEMALE' THEN 1 ELSE 0 END) As [(Under20)FeMale],
,SUM(CASE WHEN PT.gender='MALE' THEN 1 ELSE 0 END) As [Total(M)]
,SUM(CASE WHEN PT.gender='FEMALE' THEN 1 ELSE 0 END) As [Total(F)]
,COUNT(*) As [Grand Total]
FROM Departemnt_Table DT
INNER JOIN Person_Table PT ON DT.depatment_id = PT.depatment_id
GROUP BY DT.DepartmentName
Run Code Online (Sandbox Code Playgroud)