Hola.
Me temo que vas a volver a tener que usar cursores o tablas temporales.
NOTA : En Interbase / Firebird si que se puede hacer de una forma muy elegante, mediante un procedimiento almacenado y un bucle
for select :
Código:
create procedure Listado
returns (ID Integer, SUMA Integer, CALCULO integer)
declare variable MEDIA integer;
begin
for select ID from Tabla1 into :ID
do begin
select sum(Campo1), avg(Campo2)
from Tabla2
where ID = :ID
into :SUMA, :MEDIA;
:CALCULO = :SUM / :MEDIA;
suspend;
end
end
Lamentablemente lo unico parecido en SQL Server són los cursores.
Saludos.