Ver Mensaje Individual
  #7  
Antiguo 22-03-2009
cdac901 cdac901 is offline
Miembro
 
Registrado: feb 2008
Posts: 12
Reputación: 0
cdac901 Va por buen camino
Hola creo que por la cantidad de datos, deberias realizar un procediemto almacenado

Código SQL [-]
CREATE PROCEDURE NEW_PROCEDURE
RETURNS(AREA VARCHAR(10),
        ESTADO_A INTEGER,
        ESTADO_P INTEGER) /* NO SE DE QUE TIPO SON LOS CAMPOS*/
AS
DECLARE VARIABLE V_ESTADO CHAR(1);
BEGIN
   ESTADO_A = 0;
   ESTADO_P = 0;

   FOR
       SELECT DISTINCT
              E.AREA,
              P.ESTADO
         FROM ESTRUCTURA E
    LEFT JOIN COMPRAS P
           ON ( (E.EMPRESA = P.EMPRESA) AND (E.AREA = P.AREA) AND (E.SUBAREA = P.SUBAREA) )
        WHERE E.EMPRESA = 'emp1'
         INTO :AREA,
              :V_ESTADO

   DO BEGIN
         IF (V_ESTADO = 'A') THEN
             ESTADO_A = 1;

         IF (V_ESTADO = 'P') THEN
             ESTADO_P = 1;

         SUSPEND;
      END
END


Luego de esto podrias hacer un sql con el resultado del procedimiento

Código SQL [-]
SELECT A.AREA, SUM(A.ESTADO_A), SUM(A.ESTADO_P) FROM NEW_PROCEDURE A

Agrega dos indices en la Tabla ESTRUCTURA campo ESTADO ascendente y descendente respectivamente, asi como los campos que estan despues del ON (E.EMPRESA, P.EMPRESA, E.AREA...)

Espero que te sirva

Última edición por cdac901 fecha: 22-03-2009 a las 21:13:26.
Responder Con Cita