我有一个关于使用偏移量的问题,具体取决于返回的行数。我使用oracle 12c。
以下是我过于简单的查询示例:
SELECT COUNT(*)OVER()total,name,fullname
从人
按名称排序
偏移2行
仅取下3行
我想要实现的是,仅当总大于 x (例如100)
时才会进行偏移和提取我试过这个,但它不是有效的查询
SELECT COUNT(*)OVER()total,name,fullname
从人
按名称排序
CASE(总计> 100)THEN(偏移2行
仅取下一行3)
之前的
答案 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 ;