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