Sie brauchen keine korrelierte Unterabfrage für das, was Sie tun. Hier ist eine Möglichkeit basierend auf Ihrer Anfrage:
select CustomerNum, count(CustomerNum)
from Rentals R
group by CustomerNum
having count(CustomerNum) = (select max(cnt)
from (select CustomerNum, count(CustomerNum) as cnt
from Rentals
group by CustomerNum
) rc
);
Ich wäre geneigt, die Unterabfrage in den from
zu verschieben -Klausel und verwenden Sie Unterabfragen:
select rc.*
from (select CustomerNum, count(CustomerNum) as cnt
from Rentals R
group by CustomerNum
) rc join
(select max(cnt) as maxcnt
from (select CustomerNum, count(CustomerNum) as cnt
from Rentals
group by CustomerNum
) rc
) m
on rc.cnt = m.maxcnt;
Dies sind Standard-SQL und sollten in beiden Systemen funktionieren. In der Praxis würde ich wahrscheinlich einen Weg finden, top
zu verwenden oder row_number()
auf SQL Server 2008.