Sql Oracle上的标识符无效

Sql Oracle上的标识符无效,sql,oracle,Sql,Oracle,我有一个问题: SELECT * FROM (SELECT ORDEN.* ,ROW_NUMBER() OVER (ORDER BY HDC_FEC) AS FILE FROM (SELECT HDC_OPP AS numberOperation, HDC_FEC AS SystemDate,ESD_DES AS state,HDC_MTV AS motiveCode FROM HDC LEFT JOIN TRM ON HDC.HDC_TRM = TRM.

我有一个问题:

SELECT *
FROM (SELECT ORDEN.* ,ROW_NUMBER() OVER (ORDER BY HDC_FEC) AS FILE
      FROM (SELECT HDC_OPP AS numberOperation, HDC_FEC AS SystemDate,ESD_DES AS state,HDC_MTV AS motiveCode FROM HDC
              LEFT JOIN TRM ON HDC.HDC_TRM = TRM.TRM_COD 
              ...
我在OVER子句中得到一个错误“无效标识符HDC\u FEC”。如果我用SystemDate替换,效果很好。为什么我不能用HDC\U FEC代替SystemDate


谢谢。

您在子查询中为
HDC\u FEC
列提供了别名
SystemDate
,因此您只能在外部查询中引用该别名:

SELECT *
FROM (SELECT ORDEN.* ,ROW_NUMBER() OVER (ORDER BY SystemDate) AS FILE
原始基础表列不可见-它们超出范围。您只能看到在子查询中公开的内容


从您所展示的内容来看,还不清楚您是否真的需要第二级子查询。如果对子查询(
where ORDEN.some\u col=…
)没有
where
子句,则可以将
行编号()移动到相同的查询级别。您可能还需要
partition by
子句,但它仍然不清楚。(可能您错误地创建了第二级子查询,以便在确实需要
分区时添加
分组依据

您在子查询中为
HDC\u FEC
列提供了别名
SystemDate
,因此您只能在外部查询中引用该别名:

SELECT *
FROM (SELECT ORDEN.* ,ROW_NUMBER() OVER (ORDER BY SystemDate) AS FILE
原始基础表列不可见-它们超出范围。您只能看到在子查询中公开的内容


从您所展示的内容来看,还不清楚您是否真的需要第二级子查询。如果对子查询(
where ORDEN.some\u col=…
)没有
where
子句,则可以将
行编号()移动到相同的查询级别。您可能还需要
partition by
子句,但它仍然不清楚。(可能您错误地创建了第二级子查询,以便在确实需要
分区时添加
分组依据
。?

我查询的最后一部分我使用的文件在哪里?还有?。谢谢。@Chema-这对于最外层的查询和单个子查询是有意义的;但是您有两个级别的子查询,我不确定是否需要最内层的子查询。但很难从您的代码片段中分辨出来。我使用此查询使用MyBatis返回分页结果。我查询的最后一部分使用WHERE文件?还有?。谢谢。@Chema-这对于最外层的查询和单个子查询是有意义的;但是您有两个级别的子查询,我不确定是否需要最内层的子查询。但很难从您的代码片段中分辨出来。我使用这个查询来返回使用MyBatis的分页结果。