0

2012年のセッション3で1つの科目のみに登録した学生の番号、科目コード、年、および学期をリストします。

SELECT StudentNum, RSubjectCode, Year, SessionTerm 
 FROM <TABLE> 
WHERE Year ='2012' 
  AND SESSIONTERM = '3';

これにより、2012年とセッション3の全員が選択されます。1つの科目のみを登録した学生のみを見つけるにはどうすればよいですか。

4

1 に答える 1

3

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
于 2012-11-05T11:46:04.863 に答える