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
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
|
|
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. |
