首页 > 解决方案 > ORA-00904: 无效的标识符。"TT"."H_NO": 无效标识符

问题描述

我对 Oracle 缺乏经验,我不明白我在哪里做错了。我的查询正在顺利运行 MSSSQL,但我在 oracle 中遇到错误。

ERROR ( AND MTH.M_NO =TT.H_NO) MALIYET)
ORA-00904: "TT"."H_NO": invalid identifier.
select TT.H_NO, 
       TV.H_TARIH,
       TV.H_BITTAR,

       ( SELECT SUM(
                  ( M_SYTOPLAM
                  + M_COCUK
                  + M_YAKACAK
                  + M_MTOPLAM
                  + M_FMTOPLAM
                  + ( ( M_SSKI + M_EK2 + M_EK1)
                    + M_TISVEREN
                    + M_HOLKES
                    + M_HOLKES1
                    )
                  - M_BRUTKES
                  + M_ESIPRIM
                  + M_ESARTIS
                  + M_XEK9
                )
                - ( CASE
                    WHEN CHARINDEX('05510',NVL(MTK.M_CHR1,MTH.M_EKKOD2)) > 0
                    AND  MTH.M_XSGRT=1
                    THEN ROUND((MTH.M_SSKM + MTH.M_EK3) * 0.05,2)
                    ELSE 0.00
                    END
                  + ( CASE
                      WHEN MTH.M_XSGRT = 1
                      AND  RTRIM(NVL(M_EKKOD2,' '))='05746'
                      AND  MTH.M_SSKI>0
                      AND  MTH.M_XEK4 =0
                      THEN ROUND((MTH.M_SSKM - ROUND(((((MTH.M_TARTIS*2))/(MTH.M_SSKI))*MTH.M_SSKM),2))*.05,2)
                      ELSE 0
                      END
                    )
                  )
                )
         FROM   H_MATRAH MTH
                INNER JOIN H_MATEK MTK
                ON MTH.M_NO=MTK.M_NO      
                   AND MTH.M_YIL=MTK.M_YIL
                   AND MTH.M_AY=MTK.M_AY
                   AND MTH.M_SKOD=MTK.M_SKOD
                   AND MTH.M_YIL = 2020
                   AND MTH.M_AY = 3
                   AND MTH.M_NO =TT.H_NO
       ) MALIYET
from   TERFNAKL TT
       INNER JOIN TERFNAKLV TV
       ON TT.H_NO=TV.H_NO

标签: sqloracleoracle11g

解决方案


在您的 Oracle 版本中使用如下

代替

   AND MTH.M_NO =TT.H_NO

   WHERE MTH.M_NO =TT.H_NO

我已经进行了一些测试来识别问题

以下不起作用

select (select tt.today  from dummy1  tb 
INNER JOIN dummy1 tc on  
tb.branch_code=tc.branch_code 
and tb.eof=tc.eof 
and  tb.branch_code=tt.branch_code )
from dummy2 tt

以下作品

select (select tt.today  from dummy1  tb 
INNER JOIN dummy1 tc on  
tb.branch_code=tc.branch_code 
and tb.eof=tc.eof 
where  tb.branch_code=tt.branch_code )
from dummy2 tt

推荐阅读