Oracle偏移量提取为可选

时间:2017-05-24 15:12:22

标签: sql oracle12c


我有一个关于使用偏移量的问题,具体取决于返回的行数。我使用oracle 12c。

以下是我过于简单的查询示例:

  

SELECT COUNT(*)OVER()total,name,fullname    
从人    
按名称排序    
偏移2行    
仅取下3行

我想要实现的是,仅当大于 x (例如100)

时才会进行偏移和提取

我试过这个,但它不是有效的查询

  

SELECT COUNT(*)OVER()total,name,fullname    
从人    
按名称排序    
CASE(总计> 100)THEN(偏移2行    
仅取下一行3)

之前的

1 个答案:

答案 0 :(得分:0)

我想也许您应该使用row_number()代替:

WITH p AS (
      SELECT COUNT(*) OVER () as total, name, fullname,
             ROW_NUMBER() OVER (ORDER BY name) as seqnum
      FROM person p
     )
SELECT p.total, p.name, p.fullname
FROM p
WHERE (total > 100 AND seqnum BETWEEN 3 AND 5) OR
      (total <= 100 AND seqnum <= 3)
ORDER BY name ;