4 votes

Somme dynamique SQL des valeurs d'une colonne

J'ai ce sql mais ce que je cherchais à faire était d'avoir une autre colonne qui avait le total de l'autre colonne de correspondance comme ceci...

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

4voto

Mikael Eriksson Points 77190

Vous pouvez simplement répéter vos déclarations de cas et les ajouter.

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]

2voto

Arion Points 17617

Vous pouvez faire quelque chose comme ça :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X