Title: Message
Ojo, cuando no haya registros que cumplan el where, puede que tengas problemas.
Nosotros siempre ponemos un defecto para este tipo de informacion (max, min, sum, etc). En lugar de SUM(IMPDIF)  ponemos Value(SUM(IMPDIF), 0), tambien existe otra formula usando una variable especial, pero esta es la mas sencilla. Lo que no se es como deberiais ponerlo con el CASE, no estoy muy familiarizado. Pero supongo que nuestro colega Hector nos lo podra solventar. 
Saludos.
 
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED]
Sent: 06 March 2006 09:18
To: [email protected]
Subject: RE: Pregunta de SQL


Lo he probado y funciona perfectamente.

Muchas gracias por vuestra ayuda.
Saludos.



"Hector Vera G." <[EMAIL PROTECTED]>
Enviado por: [EMAIL PROTECTED]

03/03/2006 18:28

Por favor, responda a
[email protected]

Para
<[email protected]>
cc
Asunto
RE: Pregunta de SQL





MAS O MENOS SERIA ASI..............!!!!! PRUEBALO
SALUDOS,
hector
 
 
 
DECLARE C1 CURSOR FOR                                
SELECT MESCON,AÑOCON,NUMDOC,NUMPRO,FRAPRO,

            SUM(CASE WHEN CODREG ='D' THEN IMPDIF ELSE IMPDIF * -1) AS SUMA
FROM FCPDIF                                          
WHERE  (DELDES= :DDEL  OR :DDEL =0)               AND        

                 (CODFAM= :DFAM  OR :DFAM =' ')             AND        

                 (CODDIF= :DCOD  OR :DCOD =0)               AND        

                 (ORIGE1= :DORI  OR :DORI =' ')                   AND        

                 (OK1   = :DSOL  OR :DSOL =' ')                

GROUP BY MESCON,AÑOCON,NUMDOC,NUMPRO,FRAPRO          

HAVING (MESCON= :DMESC OR :DMESC=0)          AND        

             (AÑOCON= :DANOC OR :DANOC=0)              AND        

             (NUMDOC= :DDOCN OR :DDOCN=0)             AND        

             (NUMPRO= :DPROA OR :DPROA=0)             AND        

             (FRAPRO= :DDOCS OR :DDOCS='          ')    

-----Mensaje original-----
De:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]En nombre de [EMAIL PROTECTED]
Enviado el:
Viernes, 03 de Marzo de 2006 11:29 a.m.
Para:
[email protected]
Asunto:
Pregunta de SQL


Buenas,


Tengo la siguiente sentencia SQL que me funciona bien


DECLARE C1 CURSOR FOR                                

SELECT MESCON,AÑOCON,NUMDOC,NUMPRO,FRAPRO,SUM(IMPDIF)

FROM FCPDIF                                          

WHERE  (DELDES= :DDEL  OR :DDEL =0)               AND        

                 (CODFAM= :DFAM  OR :DFAM =' ')             AND        

                 (CODDIF= :DCOD  OR :DCOD =0)               AND        

                 (ORIGE1= :DORI  OR :DORI =' ')                   AND        

                 (OK1   = :DSOL  OR :DSOL =' ')                

GROUP BY MESCON,AÑOCON,NUMDOC,NUMPRO,FRAPRO          

HAVING (MESCON= :DMESC OR :DMESC=0)          AND        

             (AÑOCON= :DANOC OR :DANOC=0)              AND        

             (NUMDOC= :DDOCN OR :DDOCN=0)             AND        

             (NUMPRO= :DPROA OR :DPROA=0)             AND        

             (FRAPRO= :DDOCS OR :DDOCS='          ')    


 El problema es con el SUM(IMPDIF), por que no siempre se debe sumar , hay un campo(CODREG,->'D' O 'H')) que determina si IMPDIF se debe suma  o restar y esto  es lo que no  se hacer; seguro que hay una manera facil de hacerlo pero la verdad es que no estoy muy puesto en SQL.


Alguna idea?


Gracias por anticipado.

Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si no es vd. el destinatario indicado, queda notificado de que la utilización, divulgación y/o copia sin autorización está prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.
This message is intended exclusively for its addressee and may contain information that is CONFIDENTIAL and protected by professional privilege. If you are not the intended recipient you are hereby notified that any dissemination, copy or disclosure of this communication is strictly prohibited by law. If this message has been received in error, please immediately notify us via e-mail and delete it.


Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si no es vd. el destinatario indicado, queda notificado de que la utilización, divulgación y/o copia sin autorización está prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.
This message is intended exclusively for its addressee and may contain information that is CONFIDENTIAL and protected by professional privilege. If you are not the intended recipient you are hereby notified that any dissemination, copy or disclosure of this communication is strictly prohibited by law. If this message has been received in error, please immediately notify us via e-mail and delete it.

Responder a