根据sql server中的某些条件查找行的总和
您好,我无法在此查询中找到行的总和- 各表如下: 主选择码根据sql server中的某些条件查找行的总和,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,您好,我无法在此查询中找到行的总和- 各表如下: 主选择码 ChoiceCode MainCourseId CourseLevelId InstituteId 硕士课程 MainCourseId MainCourseName CourseLevelId CourseProgram 11 x 1 abc 12 y
ChoiceCode MainCourseId CourseLevelId InstituteId
硕士课程
MainCourseId MainCourseName CourseLevelId CourseProgram
11 x 1 abc
12 y 2 xyz
大师级
CourseLevelId CourseLevelName
1 deg
2 Dip
硕士研究所
Instituteid InstituteName Statusid
1001 Insti1 100
1002 Insti2 200
硕士研究所
StatusId StatusName
100 Status1
200 Status2
现在,使用所有这些表格,我想展示以下内容:
CourseProgram CourseLevelName Status1(from Master_InstituteStatus) Status2(from Master_InstituteStatus) TotalInstitutes
abc Deg Count(status1institute) Count(status2institute) Total(status1+status2)
这就是我尝试过的:
SELECT B.CourseProgram,C.CourseLevelName,
sum(case when E.InstituteStatusName =' Status1' then 1 else 0 end )as Status1,
sum(case when E.InstituteStatusName =' Status2' then 1 else 0 end ) as Status2,
FROM Master_ChoiceCode A
inner join Master_MainCourse B on A.MainCourseID=B.MainCourseID
inner join Master_CourseLevel C on A.CourseLevelID=C.CourseLevelID
inner join Master_Institute D on A.InstituteID=D.InstituteID
inner join Master_InstituteStatus1 E on D.InstituteStatusID1=E.InstituteStatusID
where B.CourseLevelID IN(1,2)
GROUP BY B.CourseProgram,A.CourseLevelID,C.CourseLevelName,E.InstituteStatusName
order by B.CourseProgram,C.CourseLevelName;
通过这个,我得到如下输出:
CourseProgram CourseLevelName Status1(from Master_InstituteStatus) Status2(from Master_InstituteStatus)
abc deg 10(count of status1) 20(count of status2)
请告诉我应该如何找到Status1列和Status2列的总和,以便我可以得到最后一列作为学院总数
SELECT B.CourseProgram,C.CourseLevelName,
sum(case when E.StatusName=' Status1' then 1 else 0 end )as Status1,
sum(case when E.StatusName=' Status2' then 1 else 0 end ) as Status2,
FROM Master_ChoiceCode A
inner join Master_MainCourse B on A.MainCourseID=B.MainCourseID
inner join Master_CourseLevel C on A.CourseLevelID=C.CourseLevelID
inner join Master_Institute D on A.InstituteID=D.InstituteID
inner join Master_InstituteStatus1 E on D.InstituteStatusID1=E.InstituteStatusID
where B.CourseLevelID IN(1,2)
GROUP BY B.CourseProgram,A.CourseLevelID,C.CourseLevelName,E.InstituteStatusName
order by B.CourseProgram,C.CourseLevelName;
SELECT B.CourseProgram,C.CourseLevelName,
sum(case when E.InstituteStatusName =' Status1' then 1 else 0 end )as Status1,
sum(case when E.InstituteStatusName =' Status2' then 1 else 0 end ) as Status2,
sum(case when E.InstituteStatusName IN (' Status1', ' Status2') then 1 else 0 end ) as Total_No_of_institutes,
FROM Master_ChoiceCode A
inner join Master_MainCourse B on A.MainCourseID=B.MainCourseID
inner join Master_CourseLevel C on A.CourseLevelID=C.CourseLevelID
inner join Master_Institute D on A.InstituteID=D.InstituteID
inner join Master_InstituteStatus1 E on D.InstituteStatusID1=E.InstituteStatusID
where B.CourseLevelID IN(1,2)
GROUP BY B.CourseProgram,A.CourseLevelID,C.CourseLevelName,E.InstituteStatusName
order by B.CourseProgram,C.CourseLevelName;