当前表:
id | type | term | sysdate | e_date | t_date |
---+------+------+---------+--------+---------+
3 | ugrd | 1220 | 9/10/14 | 9/1/11 | 9/15/11 |
3 | ugrd | 1240 | 9/10/14 | 9/1/12 | 9/15/12 |
3 | grad | 1250 | 9/10/14 | 3/6/13 | 3/20/13 |*
3 | grad | 1380 | 9/10/14 | 9/1/14 | 9/15/14 |
sysdate
=今天的日期(此示例为8/20)
我希望能够查询max(term) where sysdate < t_date
使用此逻辑,应返回此行*:
3 | grad | 1250
现在我的sql看起来像这样:
select distinct cs.id, s.type, max(cs.term)
from tb_current_students cs
where sysdate < cs.t_date
显然这不起作用,这就是我来找你的原因。我尝试了一个子查询,但也失败了。希望我提供了足够的信息,如果没有评论,我会给你更多。
答案 0 :(得分:2)
使用join查询下面应该可以帮助您
SELECT A.ID, A.TYPE, A.TERM FROM
tb_current_students A JOIN
(
SELECT MAX(TERM) MAX_TERM FROM tb_current_students
WHERE TRUNC (T_DATE) < TRUNC (SYSDATE)
) B
ON A.TERM = B.MAX_TERM;
答案 1 :(得分:1)
一种简单的方法是为已经过去的所有日期获取行,然后按顺序降序并获取第一行;
SELECT id, type, term FROM (
SELECT * FROM tb_current_students A
WHERE t_date < SYSDATE
ORDER BY term DESC
)
WHERE ROWNUM <= 1