2016-07-19 10 views
0

Ich bekomme unter Fehler bei der Verwendung der Aggregatfunktion in Where-Klausel.Wie verwendet man die Aggregatfunktion in Where-Klausel

‚Ein Aggregat kann nicht erscheinen in der WHERE-Klausel, es sei denn, es ist ein Unterabfrage in einer HAVING-Klausel oder einer Auswahlliste enthalten ist, und die Säule eine äußere referrence ist aggregiert werden‘.

Abfrage:

Select a.*,b.* 
from address a 
join account c on a.acct_no=b.acct_no 
where a.stop_date in (select max(a.stop_date) 
         from address x 
         where x.acct_no=a.acct_no and x.addr_code=a.addr_code) 

Bitte vorschlagen, wie man damit umgehen

+0

Welche DBMS verwenden Sie? –

+0

Ich habe versucht, x.stop_date zu verwenden, aber es ergaben sich falsche Daten. Eigentlich konvertiere ich Oracle in SQL. In Orakel hat es gut funktioniert. –

+0

"* Ich konvertiere Oracle in SQL *" ergibt keinen Sinn. Oracle *** verwendet *** SQL als Abfragesprache. Sie verwenden bereits SQL –

Antwort

0

sollten Sie x.stop_date anstelle von a.stop_date:

Select a.*,b.* 
from address a 
join account b on a.acct_no=b.acct_no 
where a.stop_date in (select max(x.stop_date) 
         from address x 
         where x.acct_no=a.acct_no and x.addr_code=a.addr_code)