我需要找到25-29岁之间的学生目前在注册系统中排除超过25岁。
表格是:STUDENT
& STUDENT_STATUS_HISTORY
Student
包含PERSON_ID
&其他领域BIRTH_DATE
Student_Status_History
包含REASON_CODE
(排除为4)
我的问题是关于加入表格的语法以及如何使用出生日期正确计算所需的年龄范围。
有人可以提供建议吗?
答案 0 :(得分:3)
在PERSON_ID上加入表格。
要获得出生日期,请使用日期差异等功能:
select trunc((months_between(sysdate, dob))/12) age
答案 1 :(得分:1)
尝试此查询:
select count(*) from student s join student_status_history ssh
on
s.id=ssh.student_id
where
ss.reason_code=4
and
DATEDIFF(year,s.birthdate,sysdate)>=25 and DATEDIFF(year,s.birthdate,sysdate)<=29
请参阅DateDIFF。
编辑如果您的数据库不支持DATEDIFF,请尝试以下操作:
select count(*)
from
student s
join
student_status_history ssh
on
s.id=ssh.student_id
where
ss.reason_code=4
and
floor(months_between(s.birthdate, sysdate) /12)>=25 and
floor(months_between(s.birthdate, sysdate) /12)<=29