求一条取最新一条记录的sql

cpp_1 2019-06-21 03:12:02


我现在有这样一张表

我想取同一天里面,时间最新的一条记录

这一条SQL怎么写
...全文
1335 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
minsic78 2019-06-21
  • 打赏
  • 举报
回复
select t1, t2, t3
  from (select t1,
               t2,
               t3,
               row_number() over(partition by t1, trunc(t3) order by t3 desc) as rn
          from table1)
 where rn = 1
那就是这个意思?t3我这假设是date类型了,如果是字符串还是用前面的substr。
cpp_1 2019-06-21
  • 打赏
  • 举报
回复
这个可能我少说了一句,现在这个SQL是按时间分组了 我同时还需要按t1里面的值在分组 准确应该是这么说,按T1分组,同时T1里面在按时间分组取最新一个时间的T1数据
minsic78 2019-06-21
  • 打赏
  • 举报
回复
引用 5 楼 minsic78 的回复:
[quote=引用 4 楼 cpp_1 的回复:] 忘记了说这个表名为 TABLE1 select t1,t2,t3 from(select t1,t2,t3,row_number()over(partition by substr(t3,1,10) order by t3) as rn ) where rn = 1 这个是需TABLE1这个表名放在哪里
里层的查询,rn别名后面,当然前面还少了select * from 和一个“(”[/quote] 不对,说错了
select t1, t2, t3
  from (select t1,
               t2,
               t3,
               row_number() over(partition by substr(t3, 1, 10) order by t3) as rn
          from table1)
 where rn = 1
当然如果你有3楼提到的需求,就要换个分析函数了
minsic78 2019-06-21
  • 打赏
  • 举报
回复
引用 4 楼 cpp_1 的回复:
忘记了说这个表名为 TABLE1 select t1,t2,t3 from(select t1,t2,t3,row_number()over(partition by substr(t3,1,10) order by t3) as rn ) where rn = 1 这个是需TABLE1这个表名放在哪里
里层的查询,rn别名后面,当然前面还少了select * from 和一个“(”
cpp_1 2019-06-21
  • 打赏
  • 举报
回复
忘记了说这个表名为 TABLE1 select t1,t2,t3 from(select t1,t2,t3,row_number()over(partition by substr(t3,1,10) order by t3) as rn ) where rn = 1 这个是需TABLE1这个表名放在哪里
minsic78 2019-06-21
  • 打赏
  • 举报
回复
如果出现最新时间有一致的情况,而且显示所有时间最新的记录,可以用rank函数替代1楼的row_number函数~
碧水幽幽泉 2019-06-21
  • 打赏
  • 举报
回复
看错了,以为是最早的。 order by t3 改成 order by t3 desc
碧水幽幽泉 2019-06-21
  • 打赏
  • 举报
回复
假设t3是字符型。 实现如下: select t1,t2,t3 from(select t1,t2,t3,row_number()over(partition by substr(t3,1,10) order by t3) as rn ) where rn = 1

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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