Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Suma y resta de registros (https://www.clubdelphi.com/foros/showthread.php?t=65575)

darwinhdez 26-12-2009 20:13:09

Suma y resta de registros
 
hola, alguien podria decirme como realizar una resta segun la condicion, tengo una tabla con los siguientes campos:

CLV_ART, TIPO_MOV, FECHA_DOCU, CANT

tengo la siguiente consulta que lo que hace es sumar el campo CANT de los registros que cumplan la condicion TIPO_MOV = 51

SELECT CLV_ART, SUM(CANT) FROM MINV01
WHERE TIPO_MOV = 51
AND (CLV_ART LIKE "15%") OR (CLV_ART LIKE "29%")
AND FECHA_DOCU >= '09/01/2009' AND FECHA_DOCU <= '09/30/2009'
GROUP BY CLV_ART

hasta aqui no hay problema, pero necesito restar la cantidad de los registros que cumplan con la condicion TIPO_MOV = 02 y 04

Saludos

yapt 26-12-2009 21:02:40

Hola,

aquí tienes una posible solución que funcionaría (no lo he comprobado) en Oracle y PostgreSQL sin problemas:

Código SQL [-]
SELECT CLV_ART, 
  SUM(CASE WHEN TIPO_MOV = 51 THEN CANT ELSE CANT*-1 END) FROM MINV01
WHERE TIPO_MOV IN (51,2,4)
AND (CLV_ART LIKE "15%") OR (CLV_ART LIKE "29%")
AND FECHA_DOCU >= '09/01/2009' AND FECHA_DOCU <= '09/30/2009'
GROUP BY CLV_ART

Aunque no dices que base de datos/versión estás utilizando.

darwinhdez 26-12-2009 21:04:41

estoy utilizando Paradox

yapt 26-12-2009 21:14:22

Lo siento, no podré ayudar con Paradox. :confused:

marcoszorrilla 26-12-2009 21:25:33

Código Delphi [-]
var
Tm02,Tm04,TmDif Double;
begin
//ejecutas la consulta con la primera condición:
Tm02:=Query1.Fields[0].AsFloat;
//ejecutas la consulta con la segunda condición:
Tm04:=Query1.Fields[0].AsFloat;

TmDif:=Tm02 - Tm04;

ShowMessage(FormatFloat(',0.00'.TmDif));
end;

Un Saludo.


La franja horaria es GMT +2. Ahora son las 10:15:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi