我有一个Oracle表,它有一个名称,值,时间列.基本上,该表用于记录目的,以存储对特定名称所做的更改,以前的值是什么以及更改的时间.
我需要制定一个查询来获取特定名称的前n个更改,输出应该包含表中的所有名称.
任何帮助/建议?
编辑:
Name Value Time Harish Pass 1-Nov-2011 ravi Fail 2-Nov-2011 Harish Absent 31-Oct-2011 Harish Attended 31-Aug-2011 Harish Present 31-Jul-2011
我需要在11月1日,10月31日,8月31日和拉维选择Harish的细节.
解决方法
这就是你追求的吗?
sql> alter session set nls_date_format = 'DD-Mon-YYYY HH24:Mi:SS'; Session altered. sql> drop table so_test; Table dropped. sql> create table so_test ( 2 n varchar2(32) 3,v varchar2(32) 4,t date ); Table created. sql> sql> insert into so_test values ( 'X','Test1',to_date('01-Jan-2011 12:00:00','DD-Mon-YYYY HH24:Mi:SS') ); 1 row created. sql> insert into so_test values ( 'X','Test2',to_date('01-Jan-2011 13:00:00','Test3',to_date('01-Jan-2011 14:00:00','DD-Mon-YYYY HH24:Mi:SS') ); 1 row created. sql> insert into so_test values ( 'Y','Test5',to_date('02-Jan-2011 12:00:00','Test6',to_date('03-Jan-2011 12:00:00','Test7',to_date('04-Jan-2011 12:00:00','DD-Mon-YYYY HH24:Mi:SS') ); 1 row created. sql> sql> sql> select n,v,t from ( 2 select n,t,rank() over ( partition by n order by t desc) r 3 from so_test 4 ) where r <= 2; N V T -------------------------------- -------------------------------- -------------------- X Test3 01-Jan-2011 14:00:00 X Test2 01-Jan-2011 13:00:00 Y Test7 04-Jan-2011 12:00:00 Y Test6 03-Jan-2011 12:00:00 sql>
原文地址:https://www.jb51.cc/mssql/84037.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。