我在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子句应用其他过滤器.类似地,您可以将其他表连接到内联视图,就像其他表一样.