Oracle SQL查询:根据时间检索每组的最新值
发布时间:2020-12-12 13:48:04 所属栏目:百科 来源:网络整理
导读:我在Oracle数据库中有下表 id date quantity1 2010-01-04 11:00 1522 2010-01-04 11:00 2101 2010-01-04 10:45 1322 2010-01-04 10:45 3184 2010-01-04 10:45 1221 2010-01-04 10:30 13 2010-01-04 10:30 2142 2010-01-04 10:30 55154 2010-01-04 10:30 210
我在Oracle数据库中有下表
id date quantity 1 2010-01-04 11:00 152 2 2010-01-04 11:00 210 1 2010-01-04 10:45 132 2 2010-01-04 10:45 318 4 2010-01-04 10:45 122 1 2010-01-04 10:30 1 3 2010-01-04 10:30 214 2 2010-01-04 10:30 5515 4 2010-01-04 10:30 210 现在我想要检索每个id的最新值(及其时间).示例输出: id date quantity 1 2010-01-04 11:00 152 2 2010-01-04 11:00 210 3 2010-01-04 10:30 214 4 2010-01-04 10:45 122 我只是无法弄清楚如何将它放入查询中… 另外以下选项会很好: 选项1:查询只能返回最后XX分钟的值. 选项2:该id应与具有id和idname的另一个表的文本连接. id的输出应该是:id-idname(例如1-testid1). 非常感谢任何帮助! 给定这个数据…SQL> select * from qtys 2 / ID TS QTY ---------- ---------------- ---------- 1 2010-01-04 11:00 152 2 2010-01-04 11:00 210 1 2010-01-04 10:45 132 2 2010-01-04 10:45 318 4 2010-01-04 10:45 122 1 2010-01-04 10:30 1 3 2010-01-04 10:30 214 2 2010-01-04 10:30 5515 4 2010-01-04 10:30 210 9 rows selected. SQL> …以下查询给出你想要的… SQL> select x.id 2,x.ts as "DATE" 3,x.qty as "QUANTITY" 4 from ( 5 select id 6,ts 7,rank () over (partition by id order by ts desc) as rnk 8,qty 9 from qtys ) x 10 where x.rnk = 1 11 / ID DATE QUANTITY ---------- ---------------- ---------- 1 2010-01-04 11:00 152 2 2010-01-04 11:00 210 3 2010-01-04 10:30 214 4 2010-01-04 10:45 122 SQL> 关于您的额外要求,您可以向外部WHERE子句应用其他过滤器.类似地,您可以将其他表连接到内联视图,就像其他表一样. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |