Ayuda en Obtener una Columna Acumulativa en SQL

19/12/2005 - 15:14 por Developers | Informe spam
Amigos tengo esta consulta:

Select codigo, detalle, importe, porcentaje From MiTabla where tipo='01'
order by porcentaje

Retornando estos valores Ordernados x Porcentaje :
Codigo Detalle Importe Porcentaje
11111 xxxxxx 100.00 5.5
88888 yyyyyy 55.50 4.8
33333 aaaaaa 55.00 4.8
99999 wweew 40.00 4.0

a Este resultado necesito agregar una columna que acumule el porcentaje es
decir tener este resultado.

Codigo Detalle Importe Porcentaje Porcentaje_Acumulado
11111 xxxxxx 100.00 5.5 5.5
88888 yyyyyy 55.50 4.8 10.3
33333 aaaaaa 55.00 4.8 15.1
99999 wweew 40.00 4.0 19.1

La Columna Pocentaje Acumulado nace de

Fila 1 0.0 + 5.5 = 5.5 -- Debido a que la primera fila no tiene
antecesora
Fila 2 5.5 + 4.8 = 10.3 -- Porcentaje Acumulado Fila 1 + Porcentaje de
Fila 2
Fila 3 10.3 + 4.8 = 15.1 -- Porcentaje Acumulado Fila 2 + Porcentaje de
Fila 3
Fila 4 15.1 + 4.0 = 19.1 -- Porcentaje Acumulado Fila 3 + Porcentaje de
Fila 4

Ahora si se fijan el el Primer Resultado viene Ordenado x Porcentaje y de
acuerdo a ese orden tengo que acumular la columna.

Se que me ultima Posibilidad es usar cursores, pero antes de usarlo lance
este consulta para ver si me podian ayudar.

Gracias

Developers - Dany Acosta
 

Leer las respuestas

#1 Alejandro Mesa
19/12/2005 - 17:27 | Informe spam
Developers,

Aunque el resultado que posteastes no esta de acuerdo a la sentencia
"select" que usas (lo digo porque la sentencia usa ORDER BY [Porcentaje] y el
resultado esta ordenado por [Porcentaje] pero de manera descendente), tratare
de dar una posible solucion.

A simple vista podemos decir cual fila (de las que tienen porcentaje igual a
4.8) esta primero que la otra, pero estto debemos comunicarselo a sql server
de una forma programatica para lo cual debemos usar alguna otra columna que
identifique unicamente cada fila. De todas las columnas posteadas cual
podemos usar para poder identificar unicamente cada fila.?


AMB


"Developers" wrote:

Amigos tengo esta consulta:

Select codigo, detalle, importe, porcentaje From MiTabla where tipo='01'
order by porcentaje

Retornando estos valores Ordernados x Porcentaje :
Codigo Detalle Importe Porcentaje
11111 xxxxxx 100.00 5.5
88888 yyyyyy 55.50 4.8
33333 aaaaaa 55.00 4.8
99999 wweew 40.00 4.0

a Este resultado necesito agregar una columna que acumule el porcentaje es
decir tener este resultado.

Codigo Detalle Importe Porcentaje Porcentaje_Acumulado
11111 xxxxxx 100.00 5.5 5.5
88888 yyyyyy 55.50 4.8 10.3
33333 aaaaaa 55.00 4.8 15.1
99999 wweew 40.00 4.0 19.1

La Columna Pocentaje Acumulado nace de

Fila 1 0.0 + 5.5 = 5.5 -- Debido a que la primera fila no tiene
antecesora
Fila 2 5.5 + 4.8 = 10.3 -- Porcentaje Acumulado Fila 1 + Porcentaje de
Fila 2
Fila 3 10.3 + 4.8 = 15.1 -- Porcentaje Acumulado Fila 2 + Porcentaje de
Fila 3
Fila 4 15.1 + 4.0 = 19.1 -- Porcentaje Acumulado Fila 3 + Porcentaje de
Fila 4

Ahora si se fijan el el Primer Resultado viene Ordenado x Porcentaje y de
acuerdo a ese orden tengo que acumular la columna.

Se que me ultima Posibilidad es usar cursores, pero antes de usarlo lance
este consulta para ver si me podian ayudar.

Gracias

Developers - Dany Acosta



Preguntas similares