Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用别名访问Oracle ROWNUMBER_Sql_Oracle_Oracle11g_Oracle10g - Fatal编程技术网

Sql 使用别名访问Oracle ROWNUMBER

Sql 使用别名访问Oracle ROWNUMBER,sql,oracle,oracle11g,oracle10g,Sql,Oracle,Oracle11g,Oracle10g,我有一个Oracle查询 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 NOCY

我有一个Oracle查询

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
 )
 SELECT
ROW_NUMBER() OVER (
    ORDER BY 
      bco.ID desc
  ) AS SLNO,
bco.*,
cte.*,

(
    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 )  where SLNO between 10 and 25
此查询在结尾处没有“where SLNO介于10和25之间”where语句的情况下运行良好,但在此情况下显示“SLNO invalid identifier”错误


请提供帮助。

您需要使用内联视图/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
in
WHERE
子句中直接定义的别名,因为它不可见


此外,您也无法将
行编号
移动到
的位置

您需要使用内联视图/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
in
WHERE
子句中直接定义的别名,因为它不可见


此外,您也无法将
行号
移动到
的WHERE
位置

感谢您的回复,我之前也尝试过这个方法,但没有WHERE条件,它显示错误“列定义模糊”和行23@Chanky不要使用别名。*。明确定义列库,选择所需列,现在正在执行感谢您的响应,我以前也尝试过使用额外的cte,但没有where条件,它显示错误“列定义模糊”和行23@Chanky不要使用别名。*。明确定义列库、选定的必需列,它现在正在执行