微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 ORACLE SQL 中打印前三行和后三行?

如何解决如何在 ORACLE SQL 中打印前三行和后三行?

在 ORACLE sql 中,我想打印前两行和后两行。我怎样才能用一个查询来做到这一点?假设您有十行的表。我想打印前两行和后两行,如下所示:

行号 价值观
1 A
2 B
9 C
10 D

解决方法

您可以使用 row_number()over(order by row_number) 窗口函数来实现您想要的。如果你愿意,即使你可以让前两行按 row_number 排序,最后两行按列值排序 (row_number()over(order by row_number)FirstRowNumber,row_number()over(order by valuess desc)LastRowNumber ))。

表结构和插入语句:

create table tableName (Row_Number int,Valuess varchar(20));
insert into tablename values(1,'A');
insert into tablename values(2,'B');
insert into tablename values(9,'C');
insert into tablename values(10,'D');
insert into tablename values(11,'E');
insert into tablename values(12,'F');

查询:

SELECT ROW_NUMBER,Valuess FROM (
select ROW_NUMBER,Valuess,row_number()over(order by row_number)FirstRowNumber,row_number()over(order by row_number desc)LastRowNumber from tablename ) T
WHERE FIRSTROWNUMBER<=2 OR LASTROWNUMBER<=2
ORDER BY FIRSTROWNUMBER

输出:

ROW_NUMBER 价值
1 A
2 B
11 E
12 F
,

我认为您需要以下查询,

select t.*
from (select table1.*,row_number() over (order by [Row Number]) as seqnum,count(*) over () as cnt
      from table1
     ) t
where seqnum in( 1,2) or seqnum in( cnt,cnt-1);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?