SQL Dynamic SUM Column Values

I have this sql, but what I wanted to do was to have another column that had the total number of columns of other matches like this ...

enter image description here

declare @SchoolID int declare @RoleID int declare @match int declare @firstname varchar set @SchoolID=1 set @RoleID=1 SELECT dbo.Teacher.Firstname, dbo.School.SchoolName, dbo.School.SchoolID, dbo.RoleTitle.RoleTitle, CASE WHEN dbo.School.SchoolID = @SchoolID then 1 else 0 end as [SchoolMatch], CASE WHEN dbo.JobTitle.RoleTitleID = @RoleID then 1 else 0 end as [RoleMatch] FROM dbo.School INNER JOIN dbo.Lesson ON dbo.School.SchoolID = dbo.Lesson.SchoolID INNER JOIN dbo.RoleTitle ON dbo.Lesson.RoleTitleID = dbo.RoleTitle.RoleTitleID INNER JOIN dbo.Teacher ON dbo.Lesson.TeacherID = dbo.Teacher.TeacherID 
+4
source share
2 answers

You can simply repeat your case statements and add them.

 SELECT . . CASE WHEN dbo.School.SchoolID = @SchoolID then 1 else 0 end + CASE WHEN dbo.JobTitle.RoleTitleID = @RoleID then 1 else 0 end as [NewColumn] 
+4
source

You can do something like this:

 SELECT dbo.Teacher.Firstname, dbo.School.SchoolName, dbo.School.SchoolID, dbo.RoleTitle.RoleTitle, CASE WHEN dbo.School.SchoolID = @SchoolID then 1 else 0 end as [SchoolMatch], CASE WHEN dbo.JobTitle.RoleTitleID = @RoleID then 1 else 0 end as [RoleMatch], (CASE WHEN dbo.School.SchoolID = @SchoolID then 1 else 0 end)+ (CASE WHEN dbo.JobTitle.RoleTitleID = @RoleID then 1 else 0 end) AS NewColumn FROM dbo.School INNER JOIN dbo.Lesson ON dbo.School.SchoolID = dbo.Lesson.SchoolID INNER JOIN dbo.RoleTitle ON dbo.Lesson.RoleTitleID = dbo.RoleTitle.RoleTitleID INNER JOIN dbo.Teacher ON dbo.Lesson.TeacherID = dbo.Teacher.TeacherID 
+2
source

Source: https://habr.com/ru/post/1401177/


All Articles