Non hai bisogno di una sottoquery correlata per quello che stai facendo. Ecco un modo basato sulla tua richiesta:
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
);
Sarei propenso a spostare la sottoquery nel from
clausola e utilizzare le sottoquery:
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;
Questi sono SQL standard e dovrebbero funzionare in entrambi i sistemi. In pratica, probabilmente troverei un modo per usare top
o row_number()
su SQL Server 2008.