SQLPLUS ORACLE选择语句

时间:2012-11-05 11:40:54

标签: sql oracle

列出学生编号,科目代码,年份和学生的学期 谁在2012年第3届会议中只注册了一个主题。

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

这将选择2012年和第3期的所有人。我如何才能找到仅注册一个主题的学生?

1 个答案:

答案 0 :(得分:3)

按StudentNum,Year和SessionTerm分组。这样,你可以计算记录的数量,只返回那些有一条记录的记录。由于该分组,您需要获得主题代码的最大值(或最小值)。最多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