0

ORACLE DB 内でクエリを実行しようとしていますが、「I.ID 無効な識別子」というエラーで失敗し続けます。私がやろうとしているのは、ネストされたクエリと上位レベルのクエリを相互に関連付けることになっているフィルターを使用して、ネストされたクエリから特定の結果を選択することです。

The query is:
SELECT i.name, WOW.BI,WOW.BC, WOW.CP

from inv_investments i,
inner join (select 
bi.COSTI BI, 
bc.COSTI BC,
cp.COSTI AS CP

FROM 
(select atom.COSTI from 
(select odf.IF_CST_TOT COSTI
from prj_baselines bl
inner join odf_ca_baseline odf on odf.id = bl.id
WHERE i.id = bl.project_id
ORDER BY bl.created_date DESC) atom where rownum =1)  cp,

(select odf.IF_CST_TOT COSTI
from prj_baselines bl
inner join odf_ca_baseline odf on odf.id = bl.id
where odf.if_budget = 1 
AND i.id = bl.project_id) bi,

(select odf.IF_CST_TOT COSTI
from prj_baselines bl
inner join odf_ca_baseline odf on odf.id = bl.id
Where  if_budget_corrente = 1 
AND i.id = bl.project_id) bc  ) WOW on wow.ID = i.ID

それを修正する方法を知っていますか?ネストされたクエリ (例: WHERE i.id = bl.project_id) の where 句をチェックインするたびに、エラーが発生します...

4

2 に答える 2

3

次の構文は正しくありません。

SELECT i.name, WOW.BI,WOW.BC, WOW.CP
from inv_investments i,
inner join (select . . .

ステートメントiの後にコンマがあります。inner join

あなたのクエリに従うのは少し難しいですが、簡単な修正は節を削除して節にinner join変更することだと思います。onwhere

于 2013-04-15T14:15:24.047 に答える
0

各サブクエリ cp、bi、および bc がプロジェクト/投資 ID ごとに 1 つの行を返すことを意図していると仮定すると、次のように、個別のサブクエリを単一のクエリに結合できるはずです。

with cte as
(select i.id,
        i.name,
        row_number() over (partition by i.id ORDER BY bl.created_date DESC) rn,
        o.IF_CST_TOT,
        o.if_budget,
        if_budget_corrente
 from inv_investments i
 join prj_baselines b on i.id = b.project_id
 join odf_ca_baseline o on b.id = o.id)
select max(name) name,
       max(case rn when 1 then IF_CST_TOT end) BI,
       max(case if_budget when 1 then IF_CST_TOT end) BC,
       max(case if_budget_corrente when 1 then IF_CST_TOT end) CP
from cte
group by id
于 2013-04-15T14:46:54.477 に答える