Sql 通过两次返回第一列值进行分组

Sql 通过两次返回第一列值进行分组,sql,Sql,我有如下数据: ACC311 Female 3 ACC311 Female 1 ACC311 Female 4 ACC311 Male 4 ACC501 Male 4 ACC501 Male 4 ACC501 Male 4 ACC501 Male 4 . . . 现在我使用下面的查询来获得结果 Select distinct coursecode, gender, Count(CQ) as CQ from Table1 group by Co

我有如下数据:

ACC311  Female  3
ACC311  Female  1
ACC311  Female  4
ACC311  Male    4
ACC501  Male    4
ACC501  Male    4
ACC501  Male    4
ACC501  Male    4
.
.
.
现在我使用下面的查询来获得结果

Select distinct coursecode, gender, Count(CQ) as CQ from Table1
group by Coursecode, gender
order by Coursecode
它返回的结果如下,这显然是不正确的 按照要求输出的方式(见下文)

我需要获得以下信息:

CourseCode  Total   Male    Female  CQ

ACC311      67      45      22      11

ACC501      713     485     228     111
您的查询返回行“两次”,因为您按
Coursecode,gender
分组
DISTINCT
也不会有帮助

获得所需结果的最简单方法是使用条件聚合:

SELECT Coursecode,
       Count(CQ) AS CQ,
       COUNT(gender) AS Total,
       COUNT(CASE WHEN gender = 'Male' THEN 1 END) AS Male,
       COUNT(CASE WHEN gender = 'Female' THEN 1 END) AS Female
FROM Table1
GROUP BY Coursecode
SELECT Coursecode,
       Count(CQ) AS CQ,
       COUNT(gender) AS Total,
       COUNT(CASE WHEN gender = 'Male' THEN 1 END) AS Male,
       COUNT(CASE WHEN gender = 'Female' THEN 1 END) AS Female
FROM Table1
GROUP BY Coursecode