No necesita una subconsulta correlacionada para lo que está haciendo. Aquí hay una forma basada en su consulta:
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
);
Me inclinaría a mover la subconsulta a from
cláusula y usar subconsultas:
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;
Estos son SQL estándar y deberían funcionar en ambos sistemas. En la práctica, probablemente encontraría una manera de usar top
o row_number()
en SQL Server 2008.