Hola hmoner,
No si he entendido bien, pero la solución no sería del estilo:
Código Delphi
[-]
SELECT P.nombre AS Promo, CL.nombre AS Cliente, SUM(C.monto) AS Total, SUM(C.monto / P.euros * P.puntos) AS Puntos,
(select sum(c.monto)
from facturacion
where id in (select id from promo_normal)
and id = c.id
and idcliente = cl.id) as Monto_ProN ...
FROM FACTURACION C
INNER JOIN CLIENTE CL ON CL.id=C.idcliente
INNER JOIN PROMOCION P ON P.id=C.idpromo
GROUP BY CL.nombre, P.nombre
ORDER BY CL.nombre
Mas o menos creo que es eso ¿no?. Quedan calcular los puntos de la promoción normal, y el monto y puntos de promociones especiales, pero eso te lo dejo a ti
Un saludo.