2012年のセッション3で1つの科目のみに登録した学生の番号、科目コード、年、および学期をリストします。
SELECT StudentNum, RSubjectCode, Year, SessionTerm
FROM <TABLE>
WHERE Year ='2012'
AND SESSIONTERM = '3';
これにより、2012年とセッション3の全員が選択されます。1つの科目のみを登録した学生のみを見つけるにはどうすればよいですか。
StudentNum、Year、および SessionTerm でグループ化します。そうすれば、レコードの数を数えて、1 つのレコードを持つものだけを返すことができます。そのグループ化のため、サブジェクト コードの最大値 (または最小値) を取得する必要があります。最大 1 レコードはその唯一のレコードであるため、奇妙に見えるかもしれませんが、結果は正しく、クエリは高速になります。
SELECT
StudentNum,
max(RSubjectCode) as RSubjectCode,
Year,
SessionTerm
FROM
<TABLE>
WHERE
Year ='2012'
AND SESSIONTERM = '3'
GROUP BY
StudentNum,
Year,
SessionTerm
HAVING
count(*) = 1