Por empezar, el For/Next no existe en una consulta SQL. Sí existen iteraciones en los store procedures, pero so innecesarios en este caso.
Según entiendo, lo que quieres hacer es obtener para un cliente, el listado completo de productos que compró, con la suma total se compras del cliente. ¿Es así?
Ese tipo de consultas son simples, se hacen por agrupamiento, y si no las quieres paginadas, sino como reporte global, es fácil.
Un reporte discriminado por artículo, con la suma de compras por cliente, mas la suma total de ventas sería mas o menos así:
Código SQL:
Ver originalSELECT NOMBRE, ID_ARTICULO, COUNT(*) CANTIDAD, FECHA, SUM(IMPORTE) IMPORTE
FROM VENTAS
GROUP BY NOMBRE, ID_ARTICULO WITH ROLLUP;
Esto debería devolverte un listado de todos los clientes con los artículos que compró, sus cantidades discriminadas y la suma pagada por cada tipo, más una línea donde esté es subtotal (separando cada cliente ) y una línea de subtotal.
Para hacer un reporte mejor, hay que hacerlo con subconsultas forzosamente, pero para darte sugerencias deberías postear la estructura de tablas involucradas y darnos una idea de qué es lo que debe mostrar exactamente el reporte.
De todos modos quería que vieras que ciertas cosas se pueden hacer sin demasiadas complicaciones desde la misma base.