0
當變量@SubjectName在「英語」,「數學」和任何其他科目(例如科學)之間更改時,我希望以下case語句更改結果集。SQL:GROUP BY子句中的條件語句
當變量爲'英文'時,名爲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 =「英語」的結果集看起來像:
Ks2
4b
4a
3c
No KS2
4c
4b
No KS2
5a
當@SubjectName = '數學' 的結果集的樣子:
KS2
3c
4a
No KS2
2c
3a
4b
No KS2
3a
當@SubjectName =「科學」的結果集的樣子:
KS2
3a
4a
3c
2c
4c
4b
No KS2
4a
是的,這就是我想要的。謝謝,我會在我有空時嘗試一下你的代碼。同時,你能向我解釋什麼是合併。我已經讀過,但我沒有得到它。 – Matt
您好@CRAFTYDBA我已經嘗試了您的建議,但出現以下錯誤:列'student.KS2Ma'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 – Matt
該模式是否有三列名爲[ks2en],[ks2ma]和[ks2av]?這些必須是物理領域。 –