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的分页结果。