Você não precisa de uma subconsulta correlacionada para o que está fazendo. Aqui está uma maneira com base na sua 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
);
Eu estaria inclinado a mover a subconsulta para o
from
cláusula e use 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;
Estes são SQL padrão e devem funcionar em ambos os sistemas. Na prática, eu provavelmente encontraria uma maneira de usar
top
ou row_number()
no SQL Server 2008.