我在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子句。同样,您可以将其他表联接到内联视图,就像其他任何表一样。