仅在重复时检索最大日期

时间:2014-06-04 06:29:51

标签: oracle count max

我需要帮助从以下架构中检索数据:

http://sqlfiddle.com/#!2/e532ff/1

如果id_item的max(arive_date)重复,我只需要检索max(arrival_date)。

使用来自sqlfiddle的MySql,查询返回我想要的东西,homewever在使用Oracle 11g时它没有返回我需要的东西。问题似乎是当我添加count(*)子句时。

任何人都知道为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

您正在使用:

select id_item,max(date(arrive_date))
from itens
group by id_item,arrive_date
having count(*)>1;

尝试以下查询:(我已从group by子句中删除了arrival_date)

select id_item,max(date(arrive_date))
itens
group by id_item
having count(*)>1;

以上查询的结果:

ID_ITEM |  MAX(DATE(ARRIVE_DATE))
19604   |  2029-06-13
24498   |  2009-10-09

如果您想要所有3条记录,请使用:(删除having子句)

select id_item,max(date(arrive_date))
itens
group by id_item;

以上查询的结果:

ID_ITEM |  MAX(DATE(ARRIVE_DATE))
19604   |  2029-06-13
24498   |  2009-10-09
32213   |  2009-10-09

顺便说一句,对于 Oracle ,请尝试使用trunc函数而不是日期函数,例如 max(trunc(arrival_date))