SQL Server group by count消除重复

时间:2015-10-01 02:41:48

标签: sql-server group-by

我的数据如下:

ClassId ClassName   StudentId   Subject     SubjectId  
-----------------------------------------------------
1         ESL        12         English      20  
1         ESL        13         Science      30  
1         ESL        12         Social       40  
1         ESL        12         Maths        50  

必需输出:参数是主题列值

ClassId ClassName   TotalStudents   SubjectIds   
-----------------------------------------------    
1        ESL         2               20, 40, 50, 30  

当一个学生攻读多个科目时,只计算一次学生,所以在上面的数据中,12个学生ID需要多个科目,所以只计算一次。 TotalStudents值为2(来自学生ID 12的1和来自学生ID 13的1)

我写了这个查询:

Declare @subjectids string  
set @subjectids = '20,30,40,50'  

-- will split @subjectids  and store in temp table     
select 
    classname, classid, Count(Distinct StudentId)  
from 
    mytable  
where 
    SubjectsIds in @subjectIds  
group by 
    ClassId, ClassName, SubjectId,  

但我得到了这个输出:

ClassId ClassName   TotalStudents   SubjectIds  
----------------------------------------------    
1        ESL         1               20  
1        ESL         1               30  
1        ESL         1               40  
1        ESL         1               50  

有关消除重复的任何帮助吗?
编辑:我的基本问题是,当同一个学生从同一个班级学习多个科目时,如何只计算一次学生?计数可以消除重复。

0 个答案:

没有答案