変数 @SubjectName が「英語」、「数学」、および科学などの他の科目の間で変更されたときに、以下のケースステートメントで結果セットを変更したいと思います。
変数が「英語」の場合、Ks2en という学生の列が結果セットに含まれる必要がありますが、「数学」が選択されている場合、列は Ks2ma に変更され、それ以外の場合は Ks2av が選択されます。
結果セットに空白値 ('') がある場合は、'No KS2' に置き換えられます。
これが私がこれまでに持っていたもので、うまくいきません:
@SubjectName varchar(100) ='English'
SELECT CASE WHEN (student.Ks2en = '' and @SubjectName = 'English') OR
(student.Ks2ma = '' and @SubjectName = 'Mathematics') OR
(student.Ks2ma = '' AND @SubjectName <> 'Mathematics' AND
@SubjectName <> 'English')
THEN 'No KS2' ELSE student.ks2en
OR student.Ks2ma OR student.Ks2av END AS 'KS2'
FROM student JOIN subject
ON subject.upn=student.upn
WHERE
[subject.Name] = @SubjectName
以下は学生テーブルの例です。
Ks2en Ks2ma Ks2av
4b 3c 3a
4a 4a 4a
3c 3c
2c 2c
4c 3a 4c
4b 4b 4b
5a 3a 4a
@SubjectName = 'English' の場合、結果セットは次のようになります。
Ks2
4b
4a
3c
No KS2
4c
4b
No KS2
5a
@SubjectName = 'Mathematics' の場合、結果セットは次のようになります。
KS2
3c
4a
No KS2
2c
3a
4b
No KS2
3a
@SubjectName = 'Science' の場合、結果セットは次のようになります。
KS2
3a
4a
3c
2c
4c
4b
No KS2
4a