Nie potrzebujesz skorelowanego podzapytania dla tego, co robisz. Oto jeden ze sposobów na podstawie Twojego zapytania:
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
);
Byłbym skłonny przenieść podzapytanie do from
klauzula i użyj podzapytań:
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;
Są to standardowe SQL i powinny działać w obu systemach. W praktyce prawdopodobnie znalazłbym sposób na użycie top
lub row_number()
na SQL Server 2008.