La funcion se ve bien, y deberia funcionar aunque no de forma optima...
Lo mejor es hacer hacerlo de forma masiva...
Código:
SELECT C.CUSTOMERID
,C.CUSTOMERNAME
,ISNULL(S.TOTAL, 0) AS VENTASTOTALES
FROM CUSTOMERS C
LEFT JOIN
(
SELECT CUSTOMERID
,COUNT(*) TOTAL
FROM ORDERS
GROUP BY CUSTOMERID
) S
ON C.CUSTOMERID = S.CUSTOMERID
ORDER BY C.CUSTOMERID
Saludos!