2

このコードがSQLOracleORA-00904:無効な識別子エラーを返す理由を特定するのを手伝ってくれる人はいますか?クエリは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
4

2 に答える 2

4

グループ化された条件でフィルタリングする場合は、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'
于 2012-04-30T15:27:45.770 に答える
0

多分私は何かが欠けていますが、これは次のものと同じではありません:

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'
于 2012-04-30T15:49:53.747 に答える