Вам нужно обернуть его с помощью встроенного представления / cte:
WITH cte AS (
SELECT
category_id,
category_name,
parent_category_id,
ltrim(sys_connect_by_path(category_name, '/'), '/') "ParentNames"
FROM bg_categories
START WITH parent_category_id = - 1
CONNECT BY NOCYCLE
PRIOR category_id = parent_category_id
), cte2 AS (
SELECT
ROW_NUMBER() OVER (ORDER BY bco.ID desc) AS SLNO
--,bco.* -- columns should be listed explicitly
--,cte.* -- columns should be listed explicitly
,(
SELECT COUNT(*)
FROM object_document obj
WHERE obj.object_id = bco.id
AND object_type_id = 85
) AS customobjects_doc_count
FROM bg_custom_objects bco
JOIN cte ON ( cte.category_id = bco.category_id )
)
SELECT *
FROM cte2
WHERE SLNO BETWEEN 10 AND 25;
Вы не можете использовать псевдонимы, определенные непосредственно в SELECT
в WHERE
условии, если оба находятся на одном уровне, потому что он не виден Невозможно сослаться на столбец, подсчитывающий вхождения
Кроме того, вы не можете переместить ROW_NUMBER
в WHERE
либо Почему нет оконных функций в предложениях where?