2016-05-27 9 views
0

Es ist eine Weile her, seit ich Unterabfragen gemacht habe und für das Leben von mir kann ich nicht sehen, was mit meiner Frage falsch ist.Unterabfrage Gehirnfrost

Die Fehlermeldung erhalte ich bei Ausführung ist:

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

Diese meine Abfrage ist. Ich mache offensichtlich etwas falsch, aber ich kann es nicht sehen.

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' ) 

Sowohl die äußere Abfrage als auch die Unterabfrage werden separat ausgeführt. Wie ich schon sagte ist es schon eine Weile her, also vermute ich, dass es etwas Dummes ist, was ich getan habe/nicht getan habe.

Dank

Adam

+1

Sie verbinden 'pro_refno', aber die Unterabfrage gibt keinen solchen Wert zurück. –

Antwort

0

Sie nicht einen Namen für die Aggregatspalte gegeben hat:

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 

Ändern Sie diesen an:

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

Ihre Unterabfrage nicht wählen PRO_REFNO, daher kann die äußere Abfrage im Prädikat JOIN nicht übereinstimmen. Versuchen Sie, diese für die Unterabfrage:

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 

Auch Ihre COUNT (DISTINCT ...) ist ein Alias ​​nicht gegeben, was Sie brauchen, wenn es jemals in der äußeren wählen gehen verwendet werden soll.