是这样的,两个表a和b,我用这样语句查询select * from network_checkin a,network_adjustlog b where a.id=b.id(+)会有很多的重复项,在a 里面有个属性是creattime,请问如何根据creattime条件显示最近的一条记录,你那个我试过,好像有错误,也许是我写错了,请教下,可不可以再写的详细点,谢谢 了
百度 oracle ROW_NUMBER() OVER
百度 oracle ROW_NUMBER() OVER
百度 oracle ROW_NUMBER() OVER
方法一堆,最后一种执行速度应该最快,但是写起来有点麻烦 select id,ID,日期 from ( select id,ID,日期,row_number() over(partition by ID order by 日期 DESC) rn from T )where rn=1select * from T T1 WHERE NOT EXISTS(SELECT 1 FROM T WHERE ID=T1.ID AND 日期>T1.日期)
select * from T WHERE (ID,日期) IN (SELECT ID,MAX(日期) FROM T GROUP BY ID)
SELECT ID,MAX(日期), MAX(字段1)KEEP(DENSE_RANK LAST ORDER BY 日期), MAX(字段2)KEEP(DENSE_RANK LAST ORDER BY 日期) ……--其他字段同上 FROM T GROUP BY ID
嗯,刚弄oracel,不太熟,按你写的有点套不上去,是这样的,两个表a和b,我用这样语句查询select * from network_checkin a,network_adjustlog b where a.id=b.id(+)会有很多的重复项,在a 里面有个属性是creattime,请问如何根据creattime条件显示最近的一条记录,那该怎么写啊
是这样的,两个表a和b,我用这样语句查询select * from network_checkin a,network_adjustlog b where a.id=b.id(+)会有很多的重复项,在a 里面有个属性是creattime,请问如何根据creattime条件显示最近的一条记录,你那个我试过,好像有错误,也许是我写错了,请教下,可不可以再写的详细点,谢谢 了
select id,ID,日期
from (
select id,ID,日期,row_number() over(partition by ID order by 日期 DESC) rn
from T
)where rn=1select * from T T1
WHERE NOT EXISTS(SELECT 1 FROM T WHERE ID=T1.ID AND 日期>T1.日期)
select * from T
WHERE (ID,日期) IN (SELECT ID,MAX(日期) FROM T GROUP BY ID)
SELECT ID,MAX(日期),
MAX(字段1)KEEP(DENSE_RANK LAST ORDER BY 日期),
MAX(字段2)KEEP(DENSE_RANK LAST ORDER BY 日期)
……--其他字段同上
FROM T GROUP BY ID