oracle语法问题请教

liyunshe 2018-12-14 09:08:10
我有一个表如下(已经简化了,实际表更复杂),要取每个姓名的最新记录,并取出金额,以前用max(time),但是表结构复杂了max不太好用,
比如下面李四,我max后再join关联,就又取了2条记录。id是主键。
id xm je time
1 张三 10元 2018-08
2 张三 15元 2018-07
3 李四 2元 2018-08
4 李四 2元 2018-08
5 王五 5元 2018-05

我要实现下面结果,取time最新的一条不重复记录,效率最快最高最准,
因为我还要用这个结果去和别的关联,如果这个出错,最后关联的数据就不准了。
张三 10元 2018-08
李四 2元 2018-08
王五 5元 2018-05

那个rownum=1怎么用,每次一堆就只取了一行,我要每个XM的一行
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyunshe 2018-12-14
  • 打赏
  • 举报
回复
搞定了
select * from (
select
xm,
je,
row_number()over(partition by xm order by time desc) as zx
from 表)
where zx=1
nayi_224 2018-12-14
  • 打赏
  • 举报
回复
用row_number

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧