我需要将以下查询限制为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,
感谢您提供的任何帮助。
答案 0 :(得分:1)
我相信这就是您想要的。
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个查询中获取所需结果是完全不可能的,因为您需要首先评估所述表中的记录。这就是我们需要将查询包装到内部查询中为您进行评估的原因。
答案 1 :(得分:0)
使用子查询将行数限制为1000:
-Wconversion
答案 2 :(得分:0)
我刚刚把你的问题点了。
无法正确理解问题,但是我尝试了以下方法来帮助您。 -我只用了10行,您可以将其替换为1000。
SELECT
SEQ_NBR,
COUNT(*) OVER() TOTAL
FROM
(
SELECT
M.SEQ_NBR
FROM
MYTABLE M
ORDER BY
SEQ_NBR DESC
FETCH FIRST 10 ROWS ONLY
);
干杯!