oracle 如何获取最近的一条记录?
如图所示的查询记录。数据是没小时一条,自动入库。存在 其他的stcd 对应的tm不同的情况,例如有的是10点 有的是9点。也就是说有的stcd 应该入库的数据缺失了。怎么查询出每个stcd与当前时段来说 最近的一条记录。
oracle 如何获取最近的一条记录?
如图所示的查询记录。数据是没小时一条,自动入库。存在 其他的stcd 对应的tm不同的情况,例如有的是10点 有的是9点。也就是说有的stcd 应该入库的数据缺失了。怎么查询出每个stcd与当前时段来说 最近的一条记录。
使用oracle的分析函数 分组排序。
create table stc (stcd number,tm date,z number(9,2));
INSERT INTO "SYS"."STC" (STCD, TM, Z) VALUES ('61906200', TO_DATE('2022-11-07 08:11:35', 'YYYY-MM-DD HH24:MI:SS'), '198.72');
INSERT INTO "SYS"."STC" (STCD, TM, Z) VALUES ('61906200', TO_DATE('2022-11-12 08:12:52', 'YYYY-MM-DD HH24:MI:SS'), '24.63');
INSERT INTO "SYS"."STC" (STCD, TM, Z) VALUES ('61906850', TO_DATE('2022-11-11 08:12:19', 'YYYY-MM-DD HH24:MI:SS'), '280.66');
INSERT INTO "SYS"."STC" (STCD, TM, Z) VALUES ('61906850', TO_DATE('2022-11-10 08:13:25', 'YYYY-MM-DD HH24:MI:SS'), '179.95');
INSERT INTO "SYS"."STC" (STCD, TM, Z) VALUES ('61906850', TO_DATE('2022-11-13 07:14:14', 'YYYY-MM-DD HH24:MI:SS'), '98.79');
INSERT INTO "SYS"."STC" (STCD, TM, Z) VALUES ('61909660', TO_DATE('2022-11-13 08:14:46', 'YYYY-MM-DD HH24:MI:SS'), '196.76');
alter session set nls_date_format='yyyymmdd hh24:mi:ss';
select * from stc;
select b.stcd,b.tm,b.z
from (
select
a.stcd,a.tm,a.z,
dense_rank() over (partition by stcd order by a.tm desc) rank
from stc a) b where b.rank=1;