Lo puedes solucionar con un  IFNULL (  valor, 0 )
si VALOR es nulo te devuelve 0.

=======================================================
 La originalidad no esta en el "HECHO", esta en la"SOLUCIÓN"
       Cualquier cosa que gobierne tu vida te autodestruirá
 Sino dices lo que piensas es que no piensas  - M i  O T a  O -
=======================================================
  .~.
 /V\   L   I   N   U   X
// \\ >Phear the Penguin<
/(   )\
^^-^^
Pon un Pinguino en TU VIDA.COM
Pere Soria
Dpto. de Informática
Telf.    +34 964343008
E-mail: [EMAIL PROTECTED]
http://www.recordrent.com
Record Rent a Car S.A.
(quitar nospam para responder)(remove nospam to reply me)



"Cubero, Rafael \(R.\)" <[EMAIL PROTECTED]>
Sent by: [EMAIL PROTECTED]

06/03/2006 12:16

Please respond to
[email protected]

To
<[email protected]>
cc
Subject
RE: Pregunta de SQL





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