Es que la función de agrupación funciona así y punto.... no hay más vueltas. Si incluyes una función Sum, avg,etc, debes poner
todos los demás campos en el
group by
Si por un lado necesitas sumas y además otros campos, realiza 2 consultas, una con el Sum y la otra con los datos que necesitas.
En casos complejos, se puede usar un Procedimiento almacenado (si tu SGBBDD lo permite).
Edito: acabo de ver que usas Interbase, aquí va un ejemplo de un SP de selección:
Código SQL
[-]
Create procedure Dame_gente()
returns
( ELpersonal_nombre varchar(30),
ELpersonal_codigo integer,
ELdemanda_personal numeric(10,2))
as
begin
for select personal_codigo, sum(demanda_personal)
from demanda_personal
group by personal_codigo
into :ELpersonal_codigo, :ELdemanda_personal do
begin
select personal_nombre
from personal
where codigo_personal = :ELpersonal_codigo
into :Elpersonal_nombre;
suspend; //devolvemos todos los parametros que han sido asignados
end;
end;
Forma de uso:
Código Delphi
[-]
qry1.sql.text := 'select * from Dame_gente';
qry1.Open;
Como ves en el ejemplo, puedes hacer lo que te apetezca, realmente lo que se hace es construir un registro a mano, como si fuera un puzzle, añadiendo los valores que nos apetezca.
Saludos