我需要将以下查询限制为1000条记录,并在TOTAL列中显示该数字。我无法使用提取,因为该命令在计算TOTAL之后发生。这可能吗?
SELECT M.SEQ_NBR,
COUNT(*) OVER() TOTAL,
ROW_NUMBER() OVER(ORDER BY SEQ_NBR DESC) ROWNUMBER
FROM MYTABLE M
ORDER BY ROWNUMBER;
我需要第2行如下所示,但会出现“ ORA-00923:在预期位置找不到FROM关键字”
CASE WHEN COUNT(*) < 1000 THEN COUNT(*) ELSE 1000 END OVER() TOTAL,
谢谢你提供的所有帮助。
我相信这就是您要寻找的..
select y.*, case when total > 1000 then 1000 else total end total_revamped from
(select x.*,row_number() over (order by null) rownumber,count(1) over () total
from all_source x where 1=1) y
where rownumber <= 1000
order by rownumber
OFFSET 995 ROWS
FETCH NEXT 5 ROWS ONLY
您可以根据需要替换表/列。在1个查询中获取所需结果是完全不可能的,因为您需要首先评估所述表中的记录。这就是我们需要将查询包装到内部查询中为您进行评估的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句