2016-05-27 9 views
0

私はサブクエリーを行ってからしばらく経ちましたが、私の人生では私のクエリーに何が間違っているのか見ています。サブクエリー脳凍結

実行するときに私が取得エラーメッセージは次のとおりです。

ORA-00904: "SUB"."PRO_REFNO": invalid identifier 

は、これが私のクエリです。私は明らかに何か間違っていますが、私はそれを見ることができません。

SELECT 
prop.PRO_ADR_1_LINE, 
ele.POE_START_DATE, 
ele.POE_ELEMENT_DESCR, 
ele.POE_VALUE, 
ele.POE_ATTRIBUTE, 
ele.POE_FURTHER_ATTRIBUTE, 
ele.POE_FURTHER_ATTRIBUTE_DESCR, 
prop.PRO_SCHEME, 
prop.PRO_SCHEME_DESCR, 
GEO.GEO_BUS_UNIT, 
GEO.GEO_REGION, 
GEO.GEO_REGION_DESCR, 
prop.PRO_NEIGHBOURHOOD_DESCR 
--sub.pro_refno 

FROM property prop 
--inner join 



left join GEO on prop.PRO_GEO_PATCH=GEO.GEO_PATCH 
left join PROPERTY_OTHER_ELEMENT ele on ele.POE_PRO_REFNO =prop.PRO_REFNO 
inner join(
SELECT 
property.PRO_SCHEME, 
count(distinct property.PRO_REFNO) 
FROM 
PROPERTY 
WHERE 
property.pro_type = 'P' 
GROUP BY 
property.PRO_SCHEME 
)sub 
on sub.pro_refno = prop.PRO_REFNO 
where 
    ele.POE_START_DATE BETWEEN '01-APR-2016' AND sysdate 
    AND 
    ele.POE_ELEMENT LIKE 'EST%' 
    AND 
    ele.POE_ELEMENT_DESCR <> 'Estate Walkabout - Would you live in this neighbourhood ?' 
    AND 
    ele.POE_VALUE IN ('1','2','3','4','5','6','7','8','9','10' ) 

外部クエリとサブクエリの両方が別々に正常に実行されます。私がしばらく言っていたように、私は何か愚かなものを推測しています。

おかげ

アダム

+1

あなたは 'pro_refno'に参加していますが、サブクエリーはそのような値を返しません。 –

答えて

0

これは、集計の列に名前を与えていない:にすることを

inner join(
SELECT 
property.PRO_SCHEME, 
count(distinct property.PRO_REFNO) -- No name!!! 
FROM 
PROPERTY 
WHERE 
property.pro_type = 'P' 
GROUP BY 
property.PRO_SCHEME 
)sub 
on sub.pro_refno = prop.PRO_REFNO 

変更:

inner join(
SELECT 
property.PRO_SCHEME, 
count(distinct property.PRO_REFNO) As PRO_REFNO 
FROM 
PROPERTY 
WHERE 
property.pro_type = 'P' 
GROUP BY 
property.PRO_SCHEME 
)sub 
on sub.pro_refno = prop.PRO_REFNO 
0

あなたのサブクエリが選択されません。 PRO_REFNOなので、外部クエリはJOIN述語でそれを照合できません。サブクエリのためにこれを試してみてください:

SELECT 
    property.PRO_SCHEME, 
    property.PRO_REFNO, 
    count(distinct property.PRO_REFNO) 
FROM PROPERTY 
WHERE property.pro_type = 'P' 
GROUP BY 
property.PRO_SCHEME, 
property.PRO_REFNO 

また、あなたのCOUNT(DISTINCT ...)今まで外の選択で使用することになるだろう場合は、必要がありますエイリアスを、与えられていません。