sql – 在Oracle中选择组的前n个元素
发布时间:2021-03-11 13:13:35 所属栏目:MsSql教程 来源:网络整理
导读:我有一个Oracle表,它有一个名称,值,时间列.基本上,该表用于记录目的,以存储对特定名称所做的更改,以前的值是什么以及更改的时间. 我需要制定一个查询来获取特定名称的前n个更改,输出应该包含表中的所有名称. 任何帮助/建议? 编辑: Name Value TimeHarish Pa
|
我有一个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> (编辑:天瑞地安资讯网_黄海网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 搜索数字是否包含在表达式中:1-3,5,10-15,20
- sql-server – 如何获取SQL Server表中每行的实际数据大小?
- sql-server – SQL Server“快速”增量备份?
- sql-server – 5个大型数据库的驱动器配置
- sql-server – 将一组行转换为SQL Server 2000中的列
- sql-server – 将SQL Server实例根目录放在单独的驱动器上是
- SQL Server Table中XML列的操作代码
- sql – Postgres:选择具有大于1的字段数的所有行
- sql – 将两个表合并为一个新表,以便忽略另一个表中的选择行
- sql-server – SQlServer所需的内存
站长推荐
热点阅读


