2017-02-20 93 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子句刪除兩個不應該分組的字段。現在好點了嗎? –