Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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/1/oracle/9.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
在Oracle 10g上使用“With”SQL导致错误_Sql_Oracle_Sorting_Common Table Expression - Fatal编程技术网

在Oracle 10g上使用“With”SQL导致错误

在Oracle 10g上使用“With”SQL导致错误,sql,oracle,sorting,common-table-expression,Sql,Oracle,Sorting,Common Table Expression,首先,我会告诉你我的代码中的逻辑是什么,在我上一篇文章之后,有人向我指出我的过程效率低下,我应该考虑我的方法的逻辑 简单地说,我想连接一组表并过滤掉它们,以反映某个方案,下面代码中Z中的流程 然后用y在z上解析数据 在线查看这些示例,我不明白为什么这段代码不起作用,我在一些地方读到,这可能是oracle 10g的问题,但请注意。。任何建议都很好 我得到的错误是ORA-00904:Z。注释:无效标识符 with z as ( Select * FROM ( iacd_note

首先,我会告诉你我的代码中的逻辑是什么,在我上一篇文章之后,有人向我指出我的过程效率低下,我应该考虑我的方法的逻辑

简单地说,我想连接一组表并过滤掉它们,以反映某个方案,下面代码中Z中的流程

然后用y在z上解析数据

在线查看这些示例,我不明白为什么这段代码不起作用,我在一些地方读到,这可能是oracle 10g的问题,但请注意。。任何建议都很好

我得到的错误是ORA-00904:Z。注释:无效标识符

with 
z as 
(
Select * 
 FROM 
 (
    iacd_note c
    inner join iacd_ncr_note e on C.NOTE_ID=E.NOTE_ID
    inner join iacd_ncr f on E.NCR_ID=F.NCR_ID
    inner join iacd_ncr_iac g on F.NCR_ID=G.NCR_ID  
 )
 WHERE c.create_date >= date'2014-01-01'
    AND c.create_date < date'2014-12-31' 
    AND G.SCHEME_ID in (36,37,38,25,26,27,28,29,30,31,32,33,34,35,39,40,44,42,43,45, 48,49,50,51,52,55,56,57,58,68,69,70,71)
),
y as 
(
Select *
From iacd_asset
)

SELECT y.bridge_no, COUNT(*) AS comment_cnt
  FROM y INNER JOIN z
    ON REGEXP_LIKE(z.comments, '(^|\W)BN' || y.bridge_no || '(\W|$)', 'i')
 GROUP BY y.bridge_no
 ORDER BY comment_cnt;

Z.COMMENTS应该是Z中发生的合并的一部分。此子查询的SQL语法无效:

Select * 
FROM 
(
   iacd_note c
   inner join iacd_ncr_note e on C.NOTE_ID=E.NOTE_ID
   inner join iacd_ncr f on E.NCR_ID=F.NCR_ID
   inner join iacd_ncr_iac g on F.NCR_ID=G.NCR_ID  
)
WHERE ...
不能在FROM子句周围加括号。相反:

Select * 
FROM iacd_note c
inner join iacd_ncr_note e on C.NOTE_ID=E.NOTE_ID
inner join iacd_ncr f on E.NCR_ID=F.NCR_ID
inner join iacd_ncr_iac g on F.NCR_ID=G.NCR_ID  
WHERE ...

看起来with子句的输出可能与原始表的列名不同,因此我选择了all of z,并注意到我要查找的行有一个奇怪的自动名称

错误是什么?很抱歉,我太傻了,漏掉了,添加到主帖子b.bridge\u no应该是y.bridge\u no在组中由你的权利,改变了,现在得到一个不同的错误。。主post更新HI已删除括号。。仍然获取ORA-00904:Z。注释:无效标识符。。我引用Z的输出的方式是错误的吗?嗯,这不是真的-with子句和任何子查询一样,不必重命名原始表中的每一列。