【问题标题】:SQL Oracle ORA-00904: invalid indentifier errorSQL Oracle ORA-00904: 标识符无效错误
【发布时间】:2012-05-02 18:46:13
【问题描述】:

谁能帮我查明为什么这段代码返回 SQL Oracle ORA-00904: invalid indentifier 错误?该查询在没有 Country = 'Argentina' 的情况下有效,但我需要按此值进行过滤。谁能指出我正确的方向?

select llattrdata.ID dataid,

max(case when llattrdata.ATTRID = 4 then llattrdata.VALSTR end) Country

from llattrdata, dtree 

where
llattrdata.DEFID = 19400074 and
llattrdata.VERNUM = dtree.VERSIONNUM and
llattrdata.ID = dtree.DATAID and 
Country = 'Argentina'
group by llattrdata.ID

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    当您对分组条件进行过滤时,您需要使用having 而不是where

    应该是这样的:

    select llattrdata.ID dataid,
            max(case when llattrdata.ATTRID = 4 then llattrdata.VALSTR end) Country
      from llattrdata, dtree 
     where llattrdata.DEFID = 19400074 
       and llattrdata.VERNUM = dtree.VERSIONNUM 
       and llattrdata.ID = dtree.DATAID 
     group by llattrdata.ID
    having max(case when llattrdata.ATTRID = 4 then llattrdata.VALSTR end) = 'Argentina'
    

    【讨论】:

    • 感谢您的回复...这仍然给了我一个错误 ORA-00904: "COUNTRY": invalid identifier
    【解决方案2】:

    也许我遗漏了一些东西,但这与以下内容不同:

    select distinct
      llattrdata.ID     dataid,
      llattrdata.VALSTR Country
    from
      llattrdata,
      dtree 
    where
      llattrdata.VERNUM        = dtree.VERSIONNUM and
      llattrdata.ID            = dtree.DATAID     and 
      llattrdata.DEFID         = 19400074         and
      llattrdata.ATTRID        = 4                and
      llattrdata.VALSTRCountry = 'Argentina'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 2016-10-15
      相关资源
      最近更新 更多