我需要帮助从以下架构中检索数据:
http://sqlfiddle.com/#!2/e532ff/1
如果id_item的max(arive_date)重复,我只需要检索max(arrival_date)。
使用来自sqlfiddle的MySql,查询返回我想要的东西,homewever在使用Oracle 11g时它没有返回我需要的东西。问题似乎是当我添加count(*)子句时。
任何人都知道为什么它不起作用?
答案 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))