2014-04-29 54 views
0

我需要在重新入学时找到学生的年龄。 现在要做到这一点,我有一张表student_history因此首先需要从学生历史记录中获取“admin_date”录取日期,当学生状态等于'RE-ADMIN'录取时。然后检查admin_date是否大于记录中最后一次重新输入'RE-ADMIN'或完成'COMP'的admin_date。 现在,查询无法正常工作,并且遇到了不同的错误。SQL:在重新入学时检索学生年龄的查询

SELECT 
    s.admin_date 
FROM 
    student_history s 
WHERE 
    student_st = 'RE-ADMIN' 
    AND 
    s.admin_date > (
     SELECT 
      s.admin_date 
     FROM 
      s 
     WHERE 
      student_st IN('RE-ADMIN','COMP') 
    ) 

夫妇类似的链接研究。

Age Calculation Query comparison query taking ages

+1

产生了什么错误信息?它看起来像where子句中的子查询会产生多个记录,这会导致问题。 –

+0

我认真地怀疑你可以弄清楚,当你承认他们的时候,某人的年龄有多大,你需要一个生日。我们可以得到一些起始数据和样本结果吗? –

回答

0

更改您的WHERE子查询到这一点:

SELECT 
    MAX(s.admin_date) 
FROM 
    student_history 
WHERE 
    student_id = @studentId 
    AND 
    student_st IN ('RE-ADMIN', 'COMP') 

您还需要您的student_id = @studentId谓词添加到outerquery。

0

戴是正确的,你必须添加学生ID以省略错误。但是,通过这个,你会得到最后的再入学日期。你如何计算他的年龄与入学日期。你需要dob字段。