Мне нужно ограничить этот запрос до 1000 записей и отобразить count () в поле ИТОГО, как я могу это сделать? - PullRequest
1 голос
/ 29 июня 2019

Мне нужно ограничить следующий запрос до 1000 записей и показать это число в столбце ИТОГО.Я не могу использовать fetch, так как эта команда появляется после вычисления 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,

Спасибо за любыепомощь, которую вы можете оказать.

Ответы [ 3 ]

1 голос
/ 29 июня 2019

Я считаю, что это то, что вы ищете ..

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 запросе совершенно невозможно, так как вам нужно сначала оценить записи в указанной таблице.По этой причине нам нужно заключить запрос во внутренний запрос, который выполняет оценку за вас.

0 голосов
/ 29 июня 2019

Я только что соединил точки из вашего вопроса.

Не смог правильно понять проблему, но я попытался вам помочь.- Я использовал только 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
    );

db <> fiddle demo

Cheers !!

0 голосов
/ 29 июня 2019

Используйте подзапрос, чтобы ограничить количество строк до 1000:

SELECT M.SEQ_NBR,
       COUNT(*) OVER() TOTAL, 
       ROW_NUMBER() OVER(ORDER BY SEQ_NBR DESC) ROWNUMBER 
FROM (
   SELECT * FROM MYTABLE WHERE rownum <= 1000
) M 
ORDER BY ROWNUMBER;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...