Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/07/2014, 23:47
iavm
 
Fecha de Ingreso: julio-2014
Mensajes: 2
Antigüedad: 9 años, 10 meses
Puntos: 0
Calculando el Acumulado

Hola a Todos !


soy nueva en esto ojala me puedan ayudar
Necesito calcular el la cantidad acumulada de productos en base al DOC que son los diferentes movimientos del inventario algunos se restan, se suman o se quedan igual es decir con el acumulado anterior.

Debería quedar la columna del acumulado Así :

Código BASH:
Ver original
  1. Codigo      Quantity   DOC    FECHADOC   SUMAN   RESTAN   IGUAL   ACUMULADO
  2. 301262519   32        SUM    2012-12-31     32           0           0                   32
  3. 301262519   52        SUM    2012-12-31     52           0           0                   84
  4. 301262519    5          RES    2013-01-28     0             5           0                  79
  5. 301262519    2         RES     2013-04-01     0             2           0                  77
  6. 301262519   10        IGU      2013-04-18    0             0          10                 77
  7. 301262519   10        RES     2013-05-02     0           10          0                   67
  8. 301262519   6          IGU     2013-06-21     0             0          6                    67
  9. 301262519   6          IGU      2013-06-28    0             0          6                   67


mi consulta es esta



Código SQL:
Ver original
  1. SELECT A.Codigo, A.Quantity, DOC, FECHADOC,
  2.  
  3.     CASE WHEN  A.DOC = 'SUM' THEN A.Quantity ELSE 0 END  AS SUMAN  ,
  4.     CASE WHEN  A.DOC = 'RES' THEN A.Quantity ELSE 0 END  AS RESTAN ,
  5.      CASE WHEN  A.DOC = 'IGU' THEN A.Quantity ELSE 0 END AS IGUAL ,
  6. (
  7.  
  8. SELECT  
  9.     SUM( CASE WHEN  B.DOC = 'SUM' THEN 1 ELSE -1 END * B.Quantity )
  10.    
  11.          
  12.     FROM
  13.           dbo.Inventario_Total AS B
  14.          
  15.       WHERE
  16.         B.Codigo = A.Codigo
  17.         AND (
  18.         B.FECHADOC < A.FECHADOC
  19.         OR
  20.         (B.FECHADOC = A.FECHADOC )
  21.         )
  22.    
  23.  
  24.     ) AS ACUMULADO
  25.    
  26.  
  27. FROM         dbo.Inventario_Total  AS A
  28.  
  29. ORDER BY  A.Codigo,  A.FECHADOC
el problema es que no se como puedo hacer para que cuando el DOC = IGU tome el acumulado anterior

Gracias !!

Última edición por gnzsoloyo; 02/07/2014 a las 07:19