Calcular acumulados con T-SQL

08/04/2004 - 17:51 por Matín López | Informe spam
¿Alguien sabes como puedo resolver esto SIN utilizar cursores?

Tengo la siguiente tabla:

Cliente Monto
A 100
B 50
C 25
D 10

Necesito devolver una columna adicional con los acumulados del monto, de
esta manera:

Cliente Monto Acumulado
A 100 100
B 50 150
C 25 175
D 10 185


Gracias.

Preguntas similare

Leer las respuestas

#6 Martín López
08/04/2004 - 23:03 | Informe spam
ok, gracias, lo voy a probar


"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:#
hola, debes buscar un orden, si es asi como decis vos podrias generar un
campo indentity que indique el orden, entonces si la tabla la ordenas por
monto luego ese podria tener el identity, es lo unico que se me ocurre


ahora
:-(


Salu2
Maxi

Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Martín López" escribió en el mensaje
news:
> Hice el cambio que me dijiste ("e2.id <= e.id" por "e2.monto >e.monto")
y
> funciona bastante bien.
> El único problema que tengo ahora es que puedo llegar a tener montos que
se
> repiten.
> Si sabés alguna forma de solucionar esto, por favor avisame.
>
> Saludos.
>
> "Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en


el
> mensaje news:#
> > El tema es que si un monto se repite no te funcionara bien, si los
montos
> > son distintos entonces no hay problema solo debes cambiar la forma que
te
> > pase.
> >
> > Bye
> >
> >
> > Salu2
> > Maxi
> >
> > Buenos Aires Argentina
> > Desarrollador Microsoft 3 Estrellas .NET
> > [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> > MSN:
> > Nunca consideres el estudio como una obligación sino como
> > una oportunidad para penetrar en el bello y maravillosos
> > mundo del saber.
> > - Albert Einstein
> >
> >
> >
> > "Martín López" escribió en el mensaje
> > news:%
> > > Este caso funciona si los id de clientes estan en orden alfabetico,


en
> el
> > > caso que tengo que resolver están ordenados por monto. Te paso un
> ejemplo:
> > >
> > > Cliente Monto
> > > D 100
> > > B 50
> > > C 25
> > > A 10
> > >
> > > Resultado:
> > >
> > > Cliente Monto Acumulado
> > > D 100 100
> > > B 50 150
> > > C 25 175
> > > A 10 185
> > >
> > > Muchas gracias.
> > >
> > > "Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió
en
> el
> > > mensaje news:#
> > > > Hola, suponiendo que no hay dos clientes iguales aca te mando el
> > ejemplo:
> > > >
> > > > CREATE TABLE #PEPE (ID CHAR(30), MONTO INT)
> > > >
> > > > INSERT INTO #PEPE VALUES('A','100')
> > > > INSERT INTO #PEPE VALUES('B','50')
> > > > INSERT INTO #PEPE VALUES('C','25')
> > > > INSERT INTO #PEPE VALUES('D','10')
> > > >
> > > > SELECT id, monto,
> > > > (SELECT sum(monto) FROM #pepe e2 WHERE e2.id <= e.id) AS


acumulado
> > > > FROM #pepe e
> > > > ORDER BY id
> > > >
> > > >
> > > > Bye
> > > >
> > > >
> > > > Salu2
> > > > Maxi
> > > >
> > > > Buenos Aires Argentina
> > > > Desarrollador Microsoft 3 Estrellas .NET
> > > > [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> > > > MSN:
> > > > Nunca consideres el estudio como una obligación sino como
> > > > una oportunidad para penetrar en el bello y maravillosos
> > > > mundo del saber.
> > > > - Albert Einstein
> > > >
> > > >
> > > >
> > > > "Matín López" escribió en el mensaje
> > > > news:
> > > > > ¿Alguien sabes como puedo resolver esto SIN utilizar cursores?
> > > > >
> > > > > Tengo la siguiente tabla:
> > > > >
> > > > > Cliente Monto
> > > > > A 100
> > > > > B 50
> > > > > C 25
> > > > > D 10
> > > > >
> > > > > Necesito devolver una columna adicional con los acumulados del
> monto,
> > de
> > > > > esta manera:
> > > > >
> > > > > Cliente Monto Acumulado
> > > > > A 100 100
> > > > > B 50 150
> > > > > C 25 175
> > > > > D 10 185
> > > > >
> > > > >
> > > > > Gracias.
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > Outgoing mail is certified Virus Free.
> > > > Checked by AVG anti-virus system (http://www.grisoft.com).
> > > > Version: 6.0.618 / Virus Database: 397 - Release Date: 09/03/2004
> > > >
> > > >
> > >
> > >
> >
> >
> >
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.618 / Virus Database: 397 - Release Date: 09/03/2004
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.618 / Virus Database: 397 - Release Date: 09/03/2004


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida