当最大日期不唯一时,需要SQL查询才能获得单个最大日期

时间:2011-10-13 21:44:03

标签: sql oracle

如果有人问我这个问题,我很抱歉。我搜索了很长时间,没有运气。

我的表名为RESULT -

DATE                     TEST_NUM   RESULT_NUM
11/16/2010 09:27:11 AM   123456      123111      
11/16/2010 09:27:11 AM   123456      123222
11/16/2010 09:27:11 AM   123456      123333

对于给定的TEST_NUM,我只想返回最大日期一​​次,并且其他列条目无关紧要 -

11/16/2010 09:27:11 AM 123456 123111

SELECT  RESULT.DATE,
        RESULT.RESULT_NUM,
        RESULT.TEST_NUM
 FROM RESULT
 WHERE RESULT.TEST_NUM = 123456 
 AND RESULT.DATE =  (SELECT  MAX(R1.DATE)
                      FROM RESULT R1
                      WHERE r1.TEST_NUM = RESULT.TEST_NUM)

但是你猜对了,我没有得到1个结果 - 我得到了全部三个。我已经尝试了一切!请帮助这个新手!

5 个答案:

答案 0 :(得分:5)

获取最长日期:

SELECT MAX(RESULT.DATE) FROM RESULT

要获取包含最大日期的任何一行的整行:

SELECT * FROM
(
    SELECT *
    FROM RESULT
    WHERE RESULT.TEST_NUM = 123456
    ORDER BY RESULT.DATE DESC
)
WHERE rownum = 1

答案 1 :(得分:1)

更新: -

select max(DATE) from  RESULT where RESULT.TEST_NUM = 123456 group by RESULT.TEST_NUM

这是一个例子 -

select id,max (date_column) from your_table group by id

其中id是您想要最大日期值的列,这将为您提供许多日期条目中该表中id的每个唯一条目的最大日期,因为我的理解是您有多个日期,并希望最大。

答案 2 :(得分:0)

为什么这不起作用

SELECT MAX(DATE) FROM TABLE

答案 3 :(得分:0)

  

SELECT date_column FROM table GROUP BY date_column HAVING COUNT(*)> 1 ORDER BY date_column DESC LIMIT 1

这将返回非唯一的最高date_column(ORDER BY date_column DESC)(HAVING COUNT(*)> 1)

答案 4 :(得分:0)

select distinct max(date_column) 
into variable
from table
where condition;

添加distinct将确保如果数据相同则只返回一条记录。