SQL Dynamic SUM значений столбцов - PullRequest
4 голосов
/ 13 марта 2012

У меня есть этот sql, но я хотел, чтобы у меня был еще один столбец, в котором было бы столбец с другими совпадениями, подобный этому ...

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

Ответы [ 2 ]

4 голосов
/ 13 марта 2012

Вы можете просто повторить свои заявления и добавить их.

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]
2 голосов
/ 13 марта 2012

Вы можете сделать что-то вроде этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...