2017-02-20 53 views
0

我的代码是:集团在表

SELECT 
    Student_ID ,dbo.tblVahed.Vahed_ID, 
    COUNT(Student_ID) AS State_All, 
    CASE 
     WHEN tblStudentsDocument.Student_Sex = N'مرد' 
      THEN COUNT(Student_ID) 
    END AS Count_Man, 
    CASE 
     WHEN tblStudentsDocument.Student_Sex = N'زن' 
      THEN COUNT(Student_ID) 
    END AS Count_Woman 
FROM   
    dbo.tblStudentsDocument 
INNER JOIN 
    dbo.tblVahed ON dbo.tblStudentsDocument.Vahed_ID = dbo.tblVahed.Vahed_ID 
GROUP BY 
    dbo.tblVahed.Vahed_ID, Student_ID, Student_Sex 

但我要group bydbo.tblVahed.Vahed_ID。任何帮助appreicated。

回答

0

任何未在SELECT字段列表中汇总的内容必须包含在组中。如果你不想按照它进行分组,那么你不应该将它包含在未分类的选择列表中。您的查询应该如下所示。

SELECT dbo.tblVahed.Vahed_ID, 
    COUNT(Student_ID) AS State_All , 
    SUM(CASE WHEN tblStudentsDocument.Student_Sex = N'مرد' THEN 1 ELSE 0 END) AS Count_Man , 
    SUM(CASE WHEN tblStudentsDocument.Student_Sex = N'زن' THEN 1 ELSE 0 END) AS Count_Woman 
FROM dbo.tblStudentsDocument 
    INNER JOIN dbo.tblVahed ON dbo.tblStudentsDocument.Vahed_ID = dbo.tblVahed.Vahed_ID 
GROUP BY dbo.tblVahed.Vahed_ID 

注意我已经删除了学生ID,并重写了case语句以用不同的方式执行聚合。

+0

坦克你,但我需要总和组由Vahed_ID – Saber

+0

对不起,我忘了编辑group by子句删除两个不应该分组的字段。现在好点了吗? –