Esta medio complicado esto parece, les expongo otro ejemplo que me esta ocurriendo lo mismo.
Código Delphi
[-]
IBQUERY6.Close;
IBQUERY6.SQL.CLEAR;
IBQUERY6.SQL.ADD('select area, sum(monto),');
IBQUERY6.SQL.ADD('(SELECT SUM(MONTO_COMPR) FROM COMPRAS WHERE AREA = P.AREA AND ano=:ano AND mes=:mes AND EMPRESA =:EMPRESA');
IBQUERY6.SQL.ADD('AND OFICINA ='+QUOTEDSTR(SCOMBOBOX3.TEXT));
IBQUERY6.SQL.ADD('AND ESTADO ='+QUOTEDSTR('F')+'),');
IBQUERY6.SQL.ADD('(SELECT COUNT(ESTADO) FROM COMPRAS WHERE AREA = P.AREA AND ano=:ano AND mes=:mes AND EMPRESA =:EMPRESA');
IBQUERY6.SQL.ADD('AND OFICINA ='+QUOTEDSTR(SCOMBOBOX3.TEXT));
IBQUERY6.SQL.ADD('AND ESTADO ='+QUOTEDSTR('P')+')');
IBQUERY6.SQL.ADD('from PRESUPUESTO P where EMPRESA =:EMPRESA');
IBQUERY6.SQL.ADD('AND ano=:ano AND mes=:mes');
IBQUERY6.SQL.ADD('AND OFICINA ='+QUOTEDSTR(INTTOSTR(OFI)));
IBQUERY6.SQL.ADD('group BY AREA');
IBQUERY6.parambyname('empresa').AsString:=empresa;
IBQUERY6.parambyname('ano').asinteger:=calendar1.year;
IBQUERY6.parambyname('mes').asinteger:=calendar1.month;
ibquery6.Open;
Que es lo que me entrega.
Un listado de las distintas area, con su respectivo sumatoria de montos de ordenes de compra y la cantidad de ordenes con presupuesto escedido.
Como puedo mejorar esta consulta SQL para que sea mas eficiente.
La verdada es que no entiendo muy bien como opera el iiner joi, ni menos si es que me puede servir en mi caso.
Bueno los dejo aer si me ponene un ejemplo de como quedaría mi consulta agregando alguna mejor idea.
Saludos