2

次のクエリを使用すると、特定の登録 (科目) の姓がスミスの学生の数がカウントされます。

SELECT 
  e.EnrolmentId,
  COUNT((CASE WHEN s.Surname LIKE 'Smith' THEN 1 ELSE NULL END)) AS CountIf
FROM 
  Enrolment e
INNER JOIN StudentEnrolment se
  ON e.EnrolmentId = se.EnrolmentId
INNER JOIN Student s
  ON se.StudentId = s.StudentId
GROUP BY
  e.EnrolmentId

このようなパラメータとして「スミス」を持つことは可能ですか

COUNT((CASE WHEN s.Surname LIKE @Surname THEN 1 ELSE NULL END)) AS CountIf
4

1 に答える 1

3

SUM の COUNT を変更し、NULL の代わりに 0 の ELSE 部分を変更すると、動作するはずですよね?

SELECT 
  e.EnrolmentId,
  SUM((CASE WHEN s.Surname LIKE 'Smith' THEN 1 ELSE 0 END)) AS CountIf
FROM 
  Enrolment e
INNER JOIN StudentEnrolment se
  ON e.EnrolmentId = se.EnrolmentId
INNER JOIN Student s
  ON se.StudentId = s.StudentId
GROUP BY
  e.EnrolmentId

例:

declare @t as varchar(20)
select @t='ricardo'

declare @ta as table
(
    name varchar(30)
)

insert into @ta
values
('juan'),
('ricardo'),
('pablo')


select
SUM((CASE WHEN name LIKE @t THEN 1 ELSE 0 END)) AS CountIf
from @ta

出力:

CountIf
-----------
1
于 2012-07-18T03:43:17.787 に答える