Ver Mensaje Individual
  #2  
Antiguo 25-02-2009
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Reputación: 18
mjjj Va por buen camino
Amigos despuse de mucho probar llegue a un codigo que debe funcionar, pero es muy lento ya que tiene consultas anidadas.

Al tener pocos registros funciona de maravilla, agregen un alto numero de registros y simplemente se tranco el PC. Expongo el codigo.

Código SQL [-]
SELECT DISTINCT D.CODIGO,
COALESCE(MIN((SELECT (SUM(IIF(TIPO='I', cantidad, 0))-(SUM(IIF(TIPO='E',CANTIDAD,0))))
 FROM inv_prod WHERE EMPRESA=D.EMPRESA AND CODIGO=D.CODIGO AND ID = D.ID)/D.CANTIDAD),0)

FROM DETPRODUCTOS D INNER JOIN INV_PROD I ON D.EMPRESA = I.empresa
AND I.ID = D.ID AND I.CODIGO = D.CODIGO
WHERE D.EMPRESA = 'emp1'
GROUP BY D.CODIGO
HAVING (SUM(IIF(I.TIPO='I', I.cantidad, 0))-(SUM(IIF(I.TIPO='E',I.CANTIDAD,0)))) >= 0


Luego, tratando de evitar consultas anuladas, utilice este codigo

Código SQL [-]
SELECT DISTINCT D.CODIGO,
COALESCE(MIN(i.cantidad/d.cantidad),0)
FROM DETPRODUCTOS D INNER JOIN INV_PROD I ON D.EMPRESA = I.empresa
AND I.ID = D.ID AND I.CODIGO = D.CODIGO
WHERE D.EMPRESA = 'emp1'
GROUP BY D.CODIGO
HAVING (SUM(IIF(I.TIPO='I', I.cantidad, 0))-(SUM(IIF(I.TIPO='E',I.CANTIDAD,0)))) >= 0

El resultado fue que para cada registro que cumpla con la condiciones del "having", realiza el cuociente y obtengo un minimo que no es real.

Por ultimo, y creo que de esta manera debiera funcionar, es que llegue a este codigo:

Código SQL [-]
SELECT DISTINCT I.CODIGO,
MIN(SUM(IIF(I.TIPO='I', I.cantidad, 0))-(SUM(IIF(I.TIPO='E',I.CANTIDAD,0))))

FROM INV_PROD I
WHERE I.EMPRESA = 'emp1'
GROUP BY I.CODIGO

es asunto aqui es que me arroja un error...

"SQL error code = -104.
Nested aggregate functions are not allowed."

Bueno eso es lo que me podido sacar en limpio, ojala alguien me pueda ayudar a solucionar este tema que me tiene de loko.

Saludos y muchas gracias de ante mano.
Responder Con Cita