SQL Server - Sumas acumulativas agrupadas por codigo de factura

   
Vista:

Sumas acumulativas agrupadas por codigo de factura

Publicado por Pedro (9 intervenciones) el 26/04/2013 16:37:10
Saludos, tengo una duda, quiero hacer sumas acumulativas de registros de una tablas, quiero que se agrupe por el codigo del voucher como se muestra a continuacion

IdVoucher Debe SumaAcum
277365 1196.1 1196.1
277365 210.56 1406.66
277365 188.89 1595.55
277365 451.14 2046.69
277365 0.94 2047.63
277365 0.02 2047.65
277366 205.34 205.34
277366 32.6 237.94
277366 45.0 282.94
277367 20.0 20.0
277367 52.89 72.89

ahora me esta sumando todas los registros de la tabla, solo me funciona cuando sumo uno x uno, agradezco anteladamente su respuesta, espero que quede como el grafico anterior

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias Islas Gonzalez

Sumas acumulativas agrupadas por codigo de factura

Publicado por Isaias Islas Gonzalez (3186 intervenciones) el 26/04/2013 17:54:56
Este ejemplo es para la version 2008, ¿que version manejas?

USE AdventureWorks2012;
GO
SELECT BusinessEntityID, TerritoryID
,DATEPART(yy,ModifiedDate) AS SalesYear
,CONVERT(varchar(20),SalesYTD,1) AS SalesYTD
,CONVERT(varchar(20),AVG(SalesYTD) OVER (PARTITION BY TerritoryID
ORDER BY DATEPART(yy,ModifiedDate)
),1) AS MovingAvg
,CONVERT(varchar(20),SUM(SalesYTD) OVER (PARTITION BY TerritoryID
ORDER BY DATEPART(yy,ModifiedDate)
),1) AS CumulativeTotal
FROM Sales.SalesPerson
WHERE TerritoryID IS NULL OR TerritoryID < 5
ORDER BY TerritoryID,SalesYear;

BusinessEntityID TerritoryID SalesYear SalesYTD MovingAvg CumulativeTotal
---------------- ----------- ----------- -------------------- -------------------- --------------------
274 NULL 2005 559,697.56 559,697.56 559,697.56
287 NULL 2006 519,905.93 539,801.75 1,079,603.50
285 NULL 2007 172,524.45 417,375.98 1,252,127.95
283 1 2005 1,573,012.94 1,462,795.04 2,925,590.07
280 1 2005 1,352,577.13 1,462,795.04 2,925,590.07
284 1 2006 1,576,562.20 1,500,717.42 4,502,152.27
275 2 2005 3,763,178.18 3,763,178.18 3,763,178.18
277 3 2005 3,189,418.37 3,189,418.37 3,189,418.37
276 4 2005 4,251,368.55 3,354,952.08 6,709,904.17
281 4 2005 2,458,535.62 3,354,952.08 6,709,904.17

(10 row(s) affected)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sumas acumulativas agrupadas por codigo de factura

Publicado por Pedro prlink2008@gmail.com (9 intervenciones) el 26/04/2013 21:26:20
hola isaias, agradezco tu respuesta pero no es lo que busco, me explico mejor: voy a listar todos los voucher que se hicieron durante el mes de enero: voucher 1,2,3,4,5,6,7,8, cada uno de ellos tiene su detalle

IdVoucher Monto Acumlativao
1 256 256
1 300 556
1 240 796

--ahora pasamos al voucher 2, se hace un nuevo acumulativo para el voucher 2
2 300 300
2 100 400
2 20 420
2 10 430
3 50 50
3 60 110
3 20 130

--asi quiero que salga, es decir un acumulativo por cada voucher, termina el voucher y el ¡acumulativo empieza de nuevo con el sgte voucher, estoy trabajandolo con el sql server 2000, los voucher son listados por mes, espero haber sido claro, gracias por tu respuesta, si puediera ayudarme con esto estaria el doble de agradecido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias Islas Gonzalez

Sumas acumulativas agrupadas por codigo de factura

Publicado por Isaias Islas Gonzalez (3186 intervenciones) el 30/04/2013 19:40:10
2000 !!!, ya es una version muy vieja, checa este ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Create Table Tmp(
Fecha_Hora smalldatetime,
No_Comprobante int,
No_Linea smallint,
Lote int,
Pcb smallint,
Pedido smallint,
Ingreso smallint,
Egreso smallint,
Saldo smallint
)
go
 
Insert into Tmp values('2005-05-02 01:15:00',4,1,21,6,334,167,0,0)
Insert into Tmp values('2005-05-03 15:07:10',5,1,29,6,167,167,0,0)
Insert into Tmp values('2005-07-01 12:25:15',6,1,12,6,200,50,0,0)
Insert into Tmp values('2005-07-01 21:05:52',25,1,1,6,200,0,140,0)
go
 
select
        a.fecha_hora,
        a.ingreso,
        a.egreso,
        sum(b.ingreso - b.egreso) as saldo
from
        tmp as a
        inner join
        tmp as b
        on b.Fecha_Hora <= a.Fecha_Hora
group by
        a.fecha_hora,
        a.ingreso,
        a.egreso
order by
        1 asc
go
 
drop table tmp
go
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar