In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Columna de saldo acumulado
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
La verdad es que no sé como encarar el tema.
Dada una tabla como la siguiente, clásica de toda contabilidad:
Cuenta/Fecha/Debe/Haber
Necesito crear una consulta que me retorne, para una cuenta dada:
Fecha/Debe/Haber/*SALDO*
Como sorchos hago para calcular el saldo dentro de la misma consulta? Se
puede?
Carlos
Dada una tabla como la siguiente, clásica de toda contabilidad:
Cuenta/Fecha/Debe/Haber
Necesito crear una consulta que me retorne, para una cuenta dada:
Fecha/Debe/Haber/*SALDO*
Como sorchos hago para calcular el saldo dentro de la misma consulta? Se
puede?
Carlos
Columna de saldo acumulado
Carlos,
Suponiendo que la tabla es
Cuenta Fecha Debe Haber
4301 01012006 100 200
4302 01012006 25 15
Y quieres como resultado
Cuenta Fecha Saldo
4301 01012006 300
4302 01012006 35
Prueba esto:
SELECT cuenta, fecha, (debe+haber) as saldo FROM Cuentas
Saludos,
José Luis Capel
"Carlos Mora" <carlosmora@iespana.es> escribió en el mensaje
news:[email=451cacb3@news.xailer.com...]451cacb3@news.xailer.com...[/email]
> La verdad es que no sé como encarar el tema.
>
> Dada una tabla como la siguiente, clásica de toda contabilidad:
>
> Cuenta/Fecha/Debe/Haber
>
> Necesito crear una consulta que me retorne, para una cuenta dada:
>
> Fecha/Debe/Haber/*SALDO*
>
> Como sorchos hago para calcular el saldo dentro de la misma consulta? Se
> puede?
>
> Carlos
Suponiendo que la tabla es
Cuenta Fecha Debe Haber
4301 01012006 100 200
4302 01012006 25 15
Y quieres como resultado
Cuenta Fecha Saldo
4301 01012006 300
4302 01012006 35
Prueba esto:
SELECT cuenta, fecha, (debe+haber) as saldo FROM Cuentas
Saludos,
José Luis Capel
"Carlos Mora" <carlosmora@iespana.es> escribió en el mensaje
news:[email=451cacb3@news.xailer.com...]451cacb3@news.xailer.com...[/email]
> La verdad es que no sé como encarar el tema.
>
> Dada una tabla como la siguiente, clásica de toda contabilidad:
>
> Cuenta/Fecha/Debe/Haber
>
> Necesito crear una consulta que me retorne, para una cuenta dada:
>
> Fecha/Debe/Haber/*SALDO*
>
> Como sorchos hago para calcular el saldo dentro de la misma consulta? Se
> puede?
>
> Carlos
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
José Luis,
> Cuenta Fecha Debe Haber
> 4301 01012006 100 200
> 4302 01012006 25 15
>
> Y quieres como resultado
> Cuenta Fecha Saldo
> 4301 01012006 300
> 4302 01012006 35
>
> Prueba esto:
>
> SELECT cuenta, fecha, (debe+haber) as saldo FROM Cuentas
No mi estimadísimo! Esa la sé!!
La cosa es que dados
Cuenta Fecha Debe Haber
4301 01/01/2006 100.00 0.00
4301 01/02/2006 120.00 0.00
4301 03/05/2006 10.00 0.00
4301 06/05/2006 0.00 30.00
4301 24/05/2006 0.00 120.00
4301 01/06/2006 100.00 0.00
4301 01/07/2006 100.00 0.00
4302 01/01/2006 100.00 0.00
4302 01/02/2006 120.00 0.00
4302 03/05/2006 10.00 0.00
4302 06/05/2006 0.00 30.00
4302 24/05/2006 0.00 120.00
4302 01/06/2006 100.00 0.00
4302 01/07/2006 100.00 0.00
efectuar una consulta que obtenga el extracto de la cuenta con una
columna de saldo acumulado
Cuenta Fecha Debe Haber Saldo
4301 01/01/2006 100.00 0.00 100.00
4301 01/02/2006 120.00 0.00 220.00
4301 03/05/2006 10.00 0.00 230.00
4301 06/05/2006 0.00 30.00 200.00
4301 24/05/2006 0.00 120.00 80.00
4301 01/06/2006 100.00 0.00 180.00
4301 01/07/2006 100.00 0.00 280.00
4302 01/01/2006 100.00 0.00 100.00
4302 01/02/2006 120.00 0.00 220.00
4302 03/05/2006 10.00 0.00 230.00
4302 06/05/2006 0.00 30.00 200.00
4302 24/05/2006 0.00 120.00 80.00
4302 01/06/2006 100.00 0.00 180.00
4302 01/07/2006 100.00 0.00 280.00
El tema es la columna SALDO donde se acumula. Y al cambiar de cuenta el
saldo se vuelve 0 además, como cuando cambia de 4301 a 4302
No me doy cuenta como lo podría hacer en la misma consulta, obviamente a
mano lo teje cualquiera
Un saludo
> Cuenta Fecha Debe Haber
> 4301 01012006 100 200
> 4302 01012006 25 15
>
> Y quieres como resultado
> Cuenta Fecha Saldo
> 4301 01012006 300
> 4302 01012006 35
>
> Prueba esto:
>
> SELECT cuenta, fecha, (debe+haber) as saldo FROM Cuentas
No mi estimadísimo! Esa la sé!!
La cosa es que dados
Cuenta Fecha Debe Haber
4301 01/01/2006 100.00 0.00
4301 01/02/2006 120.00 0.00
4301 03/05/2006 10.00 0.00
4301 06/05/2006 0.00 30.00
4301 24/05/2006 0.00 120.00
4301 01/06/2006 100.00 0.00
4301 01/07/2006 100.00 0.00
4302 01/01/2006 100.00 0.00
4302 01/02/2006 120.00 0.00
4302 03/05/2006 10.00 0.00
4302 06/05/2006 0.00 30.00
4302 24/05/2006 0.00 120.00
4302 01/06/2006 100.00 0.00
4302 01/07/2006 100.00 0.00
efectuar una consulta que obtenga el extracto de la cuenta con una
columna de saldo acumulado
Cuenta Fecha Debe Haber Saldo
4301 01/01/2006 100.00 0.00 100.00
4301 01/02/2006 120.00 0.00 220.00
4301 03/05/2006 10.00 0.00 230.00
4301 06/05/2006 0.00 30.00 200.00
4301 24/05/2006 0.00 120.00 80.00
4301 01/06/2006 100.00 0.00 180.00
4301 01/07/2006 100.00 0.00 280.00
4302 01/01/2006 100.00 0.00 100.00
4302 01/02/2006 120.00 0.00 220.00
4302 03/05/2006 10.00 0.00 230.00
4302 06/05/2006 0.00 30.00 200.00
4302 24/05/2006 0.00 120.00 80.00
4302 01/06/2006 100.00 0.00 180.00
4302 01/07/2006 100.00 0.00 280.00
El tema es la columna SALDO donde se acumula. Y al cambiar de cuenta el
saldo se vuelve 0 además, como cuando cambia de 4301 a 4302
No me doy cuenta como lo podría hacer en la misma consulta, obviamente a
mano lo teje cualquiera
Un saludo
Columna de saldo acumulado
Aveces es mejor crear una tabla auxiliar y luego por ejemplo una vista
de la tabla auxiliar y la tabla original.
Realmente por el tiempo de proceso no tiene que ser muy grande...
Carlos Mora escribió:
> José Luis,
>> Cuenta Fecha Debe Haber
>> 4301 01012006 100 200
>> 4302 01012006 25 15
>>
>> Y quieres como resultado
>> Cuenta Fecha Saldo
>> 4301 01012006 300
>> 4302 01012006 35
>>
>> Prueba esto:
>>
>> SELECT cuenta, fecha, (debe+haber) as saldo FROM Cuentas
> No mi estimadísimo! Esa la sé!!
>
>
> La cosa es que dados
>
> Cuenta Fecha Debe Haber
> 4301 01/01/2006 100.00 0.00
> 4301 01/02/2006 120.00 0.00
> 4301 03/05/2006 10.00 0.00
> 4301 06/05/2006 0.00 30.00
> 4301 24/05/2006 0.00 120.00
> 4301 01/06/2006 100.00 0.00
> 4301 01/07/2006 100.00 0.00
> 4302 01/01/2006 100.00 0.00
> 4302 01/02/2006 120.00 0.00
> 4302 03/05/2006 10.00 0.00
> 4302 06/05/2006 0.00 30.00
> 4302 24/05/2006 0.00 120.00
> 4302 01/06/2006 100.00 0.00
> 4302 01/07/2006 100.00 0.00
>
> efectuar una consulta que obtenga el extracto de la cuenta con una
> columna de saldo acumulado
>
>
> Cuenta Fecha Debe Haber Saldo
> 4301 01/01/2006 100.00 0.00 100.00
> 4301 01/02/2006 120.00 0.00 220.00
> 4301 03/05/2006 10.00 0.00 230.00
> 4301 06/05/2006 0.00 30.00 200.00
> 4301 24/05/2006 0.00 120.00 80.00
> 4301 01/06/2006 100.00 0.00 180.00
> 4301 01/07/2006 100.00 0.00 280.00
> 4302 01/01/2006 100.00 0.00 100.00
> 4302 01/02/2006 120.00 0.00 220.00
> 4302 03/05/2006 10.00 0.00 230.00
> 4302 06/05/2006 0.00 30.00 200.00
> 4302 24/05/2006 0.00 120.00 80.00
> 4302 01/06/2006 100.00 0.00 180.00
> 4302 01/07/2006 100.00 0.00 280.00
>
>
> El tema es la columna SALDO donde se acumula. Y al cambiar de cuenta el
> saldo se vuelve 0 además, como cuando cambia de 4301 a 4302
>
>
> No me doy cuenta como lo podría hacer en la misma consulta, obviamente a
> mano lo teje cualquiera
>
> Un saludo
de la tabla auxiliar y la tabla original.
Realmente por el tiempo de proceso no tiene que ser muy grande...
Carlos Mora escribió:
> José Luis,
>> Cuenta Fecha Debe Haber
>> 4301 01012006 100 200
>> 4302 01012006 25 15
>>
>> Y quieres como resultado
>> Cuenta Fecha Saldo
>> 4301 01012006 300
>> 4302 01012006 35
>>
>> Prueba esto:
>>
>> SELECT cuenta, fecha, (debe+haber) as saldo FROM Cuentas
> No mi estimadísimo! Esa la sé!!
>
>
> La cosa es que dados
>
> Cuenta Fecha Debe Haber
> 4301 01/01/2006 100.00 0.00
> 4301 01/02/2006 120.00 0.00
> 4301 03/05/2006 10.00 0.00
> 4301 06/05/2006 0.00 30.00
> 4301 24/05/2006 0.00 120.00
> 4301 01/06/2006 100.00 0.00
> 4301 01/07/2006 100.00 0.00
> 4302 01/01/2006 100.00 0.00
> 4302 01/02/2006 120.00 0.00
> 4302 03/05/2006 10.00 0.00
> 4302 06/05/2006 0.00 30.00
> 4302 24/05/2006 0.00 120.00
> 4302 01/06/2006 100.00 0.00
> 4302 01/07/2006 100.00 0.00
>
> efectuar una consulta que obtenga el extracto de la cuenta con una
> columna de saldo acumulado
>
>
> Cuenta Fecha Debe Haber Saldo
> 4301 01/01/2006 100.00 0.00 100.00
> 4301 01/02/2006 120.00 0.00 220.00
> 4301 03/05/2006 10.00 0.00 230.00
> 4301 06/05/2006 0.00 30.00 200.00
> 4301 24/05/2006 0.00 120.00 80.00
> 4301 01/06/2006 100.00 0.00 180.00
> 4301 01/07/2006 100.00 0.00 280.00
> 4302 01/01/2006 100.00 0.00 100.00
> 4302 01/02/2006 120.00 0.00 220.00
> 4302 03/05/2006 10.00 0.00 230.00
> 4302 06/05/2006 0.00 30.00 200.00
> 4302 24/05/2006 0.00 120.00 80.00
> 4302 01/06/2006 100.00 0.00 180.00
> 4302 01/07/2006 100.00 0.00 280.00
>
>
> El tema es la columna SALDO donde se acumula. Y al cambiar de cuenta el
> saldo se vuelve 0 además, como cuando cambia de 4301 a 4302
>
>
> No me doy cuenta como lo podría hacer en la misma consulta, obviamente a
> mano lo teje cualquiera
>
> Un saludo
Columna de saldo acumulado
Carlos,
Me pillaste!! No leí bien tu enunciado.
Vista la nueva problemática.... no se que responderte. Pero buscando por
google... ahí van enlaces que pueden ayudarte:
http://www.forosdelweb.com/showthread.php?t=414753
http://www.configuracionesintegrales.co ... riggers.as p?articulo=5
Bueno... solo he visto estos dos que sean más o menos interesantes.
Saludos,
José Luis Capel
"Carlos Mora" <carlosmora@iespana.es> escribió en el mensaje
news:[email=451d563c@news.xailer.com...]451d563c@news.xailer.com...[/email]
> José Luis,
>> Cuenta Fecha Debe Haber
>> 4301 01012006 100 200
>> 4302 01012006 25 15
>>
>> Y quieres como resultado
>> Cuenta Fecha Saldo
>> 4301 01012006 300
>> 4302 01012006 35
>>
>> Prueba esto:
>>
>> SELECT cuenta, fecha, (debe+haber) as saldo FROM Cuentas
> No mi estimadísimo! Esa la sé!!
>
>
> La cosa es que dados
>
> Cuenta Fecha Debe Haber
> 4301 01/01/2006 100.00 0.00
> 4301 01/02/2006 120.00 0.00
> 4301 03/05/2006 10.00 0.00
> 4301 06/05/2006 0.00 30.00
> 4301 24/05/2006 0.00 120.00
> 4301 01/06/2006 100.00 0.00
> 4301 01/07/2006 100.00 0.00
> 4302 01/01/2006 100.00 0.00
> 4302 01/02/2006 120.00 0.00
> 4302 03/05/2006 10.00 0.00
> 4302 06/05/2006 0.00 30.00
> 4302 24/05/2006 0.00 120.00
> 4302 01/06/2006 100.00 0.00
> 4302 01/07/2006 100.00 0.00
>
> efectuar una consulta que obtenga el extracto de la cuenta con una columna
> de saldo acumulado
>
>
> Cuenta Fecha Debe Haber Saldo
> 4301 01/01/2006 100.00 0.00 100.00
> 4301 01/02/2006 120.00 0.00 220.00
> 4301 03/05/2006 10.00 0.00 230.00
> 4301 06/05/2006 0.00 30.00 200.00
> 4301 24/05/2006 0.00 120.00 80.00
> 4301 01/06/2006 100.00 0.00 180.00
> 4301 01/07/2006 100.00 0.00 280.00
> 4302 01/01/2006 100.00 0.00 100.00
> 4302 01/02/2006 120.00 0.00 220.00
> 4302 03/05/2006 10.00 0.00 230.00
> 4302 06/05/2006 0.00 30.00 200.00
> 4302 24/05/2006 0.00 120.00 80.00
> 4302 01/06/2006 100.00 0.00 180.00
> 4302 01/07/2006 100.00 0.00 280.00
>
>
> El tema es la columna SALDO donde se acumula. Y al cambiar de cuenta el
> saldo se vuelve 0 además, como cuando cambia de 4301 a 4302
>
>
> No me doy cuenta como lo podría hacer en la misma consulta, obviamente a
> mano lo teje cualquiera
>
> Un saludo
Me pillaste!! No leí bien tu enunciado.
Vista la nueva problemática.... no se que responderte. Pero buscando por
google... ahí van enlaces que pueden ayudarte:
http://www.forosdelweb.com/showthread.php?t=414753
http://www.configuracionesintegrales.co ... riggers.as p?articulo=5
Bueno... solo he visto estos dos que sean más o menos interesantes.
Saludos,
José Luis Capel
"Carlos Mora" <carlosmora@iespana.es> escribió en el mensaje
news:[email=451d563c@news.xailer.com...]451d563c@news.xailer.com...[/email]
> José Luis,
>> Cuenta Fecha Debe Haber
>> 4301 01012006 100 200
>> 4302 01012006 25 15
>>
>> Y quieres como resultado
>> Cuenta Fecha Saldo
>> 4301 01012006 300
>> 4302 01012006 35
>>
>> Prueba esto:
>>
>> SELECT cuenta, fecha, (debe+haber) as saldo FROM Cuentas
> No mi estimadísimo! Esa la sé!!
>
>
> La cosa es que dados
>
> Cuenta Fecha Debe Haber
> 4301 01/01/2006 100.00 0.00
> 4301 01/02/2006 120.00 0.00
> 4301 03/05/2006 10.00 0.00
> 4301 06/05/2006 0.00 30.00
> 4301 24/05/2006 0.00 120.00
> 4301 01/06/2006 100.00 0.00
> 4301 01/07/2006 100.00 0.00
> 4302 01/01/2006 100.00 0.00
> 4302 01/02/2006 120.00 0.00
> 4302 03/05/2006 10.00 0.00
> 4302 06/05/2006 0.00 30.00
> 4302 24/05/2006 0.00 120.00
> 4302 01/06/2006 100.00 0.00
> 4302 01/07/2006 100.00 0.00
>
> efectuar una consulta que obtenga el extracto de la cuenta con una columna
> de saldo acumulado
>
>
> Cuenta Fecha Debe Haber Saldo
> 4301 01/01/2006 100.00 0.00 100.00
> 4301 01/02/2006 120.00 0.00 220.00
> 4301 03/05/2006 10.00 0.00 230.00
> 4301 06/05/2006 0.00 30.00 200.00
> 4301 24/05/2006 0.00 120.00 80.00
> 4301 01/06/2006 100.00 0.00 180.00
> 4301 01/07/2006 100.00 0.00 280.00
> 4302 01/01/2006 100.00 0.00 100.00
> 4302 01/02/2006 120.00 0.00 220.00
> 4302 03/05/2006 10.00 0.00 230.00
> 4302 06/05/2006 0.00 30.00 200.00
> 4302 24/05/2006 0.00 120.00 80.00
> 4302 01/06/2006 100.00 0.00 180.00
> 4302 01/07/2006 100.00 0.00 280.00
>
>
> El tema es la columna SALDO donde se acumula. Y al cambiar de cuenta el
> saldo se vuelve 0 además, como cuando cambia de 4301 a 4302
>
>
> No me doy cuenta como lo podría hacer en la misma consulta, obviamente a
> mano lo teje cualquiera
>
> Un saludo
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
Manu escribió:
> Aveces es mejor crear una tabla auxiliar y luego por ejemplo una vista
> de la tabla auxiliar y la tabla original.
> Realmente por el tiempo de proceso no tiene que ser muy grande...
Seguro que con tablas auxiliares se puede, pero la cuestión está en que
este tipo de consultas se me presenta seguido, y como soy novato con el
tema por ahí existe la forma de hacerlo directamente dentro del select.
Vienes en noviembre a la reunión?
un saludo,
Carlos.
> Aveces es mejor crear una tabla auxiliar y luego por ejemplo una vista
> de la tabla auxiliar y la tabla original.
> Realmente por el tiempo de proceso no tiene que ser muy grande...
Seguro que con tablas auxiliares se puede, pero la cuestión está en que
este tipo de consultas se me presenta seguido, y como soy novato con el
tema por ahí existe la forma de hacerlo directamente dentro del select.
Vienes en noviembre a la reunión?
un saludo,
Carlos.
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
José Luis,
> Vista la nueva problemática.... no se que responderte. Pero buscando por
> google... ahí van enlaces que pueden ayudarte:
>
> http://www.forosdelweb.com/showthread.php?t=414753
> http://www.configuracionesintegrales.co ... riggers.as p?articulo=5
>
> Bueno... solo he visto estos dos que sean más o menos interesantes.
Muchísimas gracias. He leido los dos artículos y la solución no es muy
práctica que digamos. Que extraño que no haya una forma directa de hacer
eso, no?
Un saludo,
Carlos
> Vista la nueva problemática.... no se que responderte. Pero buscando por
> google... ahí van enlaces que pueden ayudarte:
>
> http://www.forosdelweb.com/showthread.php?t=414753
> http://www.configuracionesintegrales.co ... riggers.as p?articulo=5
>
> Bueno... solo he visto estos dos que sean más o menos interesantes.
Muchísimas gracias. He leido los dos artículos y la solución no es muy
práctica que digamos. Que extraño que no haya una forma directa de hacer
eso, no?
Un saludo,
Carlos
Columna de saldo acumulado
Carlos,
>
> Muchísimas gracias. He leido los dos artículos y la solución no es muy
> práctica que digamos. Que extraño que no haya una forma directa de hacer
> eso, no?
>
Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
puede tener su sentido dado que los acumuladores no saben que fila hay
antes ni después.
De hecho, tampoco existe nada parecido en xbase.
Saludos,
José Luis Capel
>
> Muchísimas gracias. He leido los dos artículos y la solución no es muy
> práctica que digamos. Que extraño que no haya una forma directa de hacer
> eso, no?
>
Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
puede tener su sentido dado que los acumuladores no saben que fila hay
antes ni después.
De hecho, tampoco existe nada parecido en xbase.
Saludos,
José Luis Capel
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
José Luis
> Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
> puede tener su sentido dado que los acumuladores no saben que fila hay
> antes ni después.
No sería necesario conocer el orden ya que es una función que se aplica
a la consulta, de forma similar a count(), sum(), avg(), etc, que
calculan el resultado sobre los grupos o toda la consulta. Si la funcion
ACCUM(debe-haber) existiese, listo el pollo. Sería similar a ir dejando
en la columna el valor que se va calculando para la función SUM(), ni
más ni menos.
Buscando ACUMM() encontré la funcion en la lista de mysql, como UDF. Me
queda como deberes para la casa ver como la cuelgo en el servidor.
Saludos.
> Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
> puede tener su sentido dado que los acumuladores no saben que fila hay
> antes ni después.
No sería necesario conocer el orden ya que es una función que se aplica
a la consulta, de forma similar a count(), sum(), avg(), etc, que
calculan el resultado sobre los grupos o toda la consulta. Si la funcion
ACCUM(debe-haber) existiese, listo el pollo. Sería similar a ir dejando
en la columna el valor que se va calculando para la función SUM(), ni
más ni menos.
Buscando ACUMM() encontré la funcion en la lista de mysql, como UDF. Me
queda como deberes para la casa ver como la cuelgo en el servidor.
Saludos.
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
José Luis,
> Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
> puede tener su sentido dado que los acumuladores no saben que fila hay
> antes ni después.
>
> De hecho, tampoco existe nada parecido en xbase.
Era cuestión de buscar, nomás.
Para MySQL:
set @total:=0;
select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo
from MAYOR where ...;
faltaba saber la historia de usar variables nomás. Gracias por tu interés,
Carlos
> Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
> puede tener su sentido dado que los acumuladores no saben que fila hay
> antes ni después.
>
> De hecho, tampoco existe nada parecido en xbase.
Era cuestión de buscar, nomás.
Para MySQL:
set @total:=0;
select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo
from MAYOR where ...;
faltaba saber la historia de usar variables nomás. Gracias por tu interés,
Carlos
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
perdón,
> set @total:=0;
> select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo from
> MAYOR where ...;
select cuenta, fecha, debe, haber, @total:= debe - haber + @total as
Saldo from MAYOR where ...;
> set @total:=0;
> select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo from
> MAYOR where ...;
select cuenta, fecha, debe, haber, @total:= debe - haber + @total as
Saldo from MAYOR where ...;
Columna de saldo acumulado
Carlos si usas MySQL no hay problema, pero si te sales del SQL estanadar
no lo podrás aplicar a otros sistemas de bases de datos basados en SQL...
Voy a intentar ir por todos los medios... tu vas seguro no?
Carlos Mora escribió:
> perdón,
>> set @total:=0;
>> select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo
>> from MAYOR where ...;
>
>
> select cuenta, fecha, debe, haber, @total:= debe - haber + @total as
> Saldo from MAYOR where ...;
no lo podrás aplicar a otros sistemas de bases de datos basados en SQL...
Voy a intentar ir por todos los medios... tu vas seguro no?
Carlos Mora escribió:
> perdón,
>> set @total:=0;
>> select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo
>> from MAYOR where ...;
>
>
> select cuenta, fecha, debe, haber, @total:= debe - haber + @total as
> Saldo from MAYOR where ...;
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
Manu
> Carlos si usas MySQL no hay problema, pero si te sales del SQL estanadar
> no lo podrás aplicar a otros sistemas de bases de datos basados en SQL...
Usar SQL de manera compatible con todos los motores es algo que veo
bastante dificil. De entrada todos van a su bola con los
autoincrementales, y como esa diferencia encontramos una de cada color.
> Voy a intentar ir por todos los medios... tu vas seguro no?
Lo tengo un poco fácil, trabajo en Atisa, asi es que... seguro seguro
estoy allí.
Un saludo
> Carlos si usas MySQL no hay problema, pero si te sales del SQL estanadar
> no lo podrás aplicar a otros sistemas de bases de datos basados en SQL...
Usar SQL de manera compatible con todos los motores es algo que veo
bastante dificil. De entrada todos van a su bola con los
autoincrementales, y como esa diferencia encontramos una de cada color.
> Voy a intentar ir por todos los medios... tu vas seguro no?
Lo tengo un poco fácil, trabajo en Atisa, asi es que... seguro seguro
estoy allí.
Un saludo
- ignacio
- Site Admin
- Mensajes: 9309
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Columna de saldo acumulado
Carlos,
Si te funciona, estupendo. Pero juraría que lo que quieres hacer con
variables no es posible. Ya que la clásula ORDER BY es la última que se
evalua en cualquier comando SQL. Por lo tanto, en principio sólo te
funcionaría cuando la ordenación coincidiese con la clave primaria y esta
fuese utilizada igualmente para el salvado físico de los registros
(clustered-index).
Un saludo,
"Carlos Mora" <carlosmora@iespana.es> wrote in message
news:[email=451d8ab7@news.xailer.com...]451d8ab7@news.xailer.com...[/email]
> José Luis,
>
>> Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
>> puede tener su sentido dado que los acumuladores no saben que fila hay
>> antes ni después.
>>
>> De hecho, tampoco existe nada parecido en xbase.
>
> Era cuestión de buscar, nomás.
>
> Para MySQL:
>
> set @total:=0;
> select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo from
> MAYOR where ...;
>
> faltaba saber la historia de usar variables nomás. Gracias por tu interés,
>
> Carlos
Si te funciona, estupendo. Pero juraría que lo que quieres hacer con
variables no es posible. Ya que la clásula ORDER BY es la última que se
evalua en cualquier comando SQL. Por lo tanto, en principio sólo te
funcionaría cuando la ordenación coincidiese con la clave primaria y esta
fuese utilizada igualmente para el salvado físico de los registros
(clustered-index).
Un saludo,
"Carlos Mora" <carlosmora@iespana.es> wrote in message
news:[email=451d8ab7@news.xailer.com...]451d8ab7@news.xailer.com...[/email]
> José Luis,
>
>> Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
>> puede tener su sentido dado que los acumuladores no saben que fila hay
>> antes ni después.
>>
>> De hecho, tampoco existe nada parecido en xbase.
>
> Era cuestión de buscar, nomás.
>
> Para MySQL:
>
> set @total:=0;
> select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo from
> MAYOR where ...;
>
> faltaba saber la historia de usar variables nomás. Gracias por tu interés,
>
> Carlos
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
Ignacio,
> Si te funciona, estupendo. Pero juraría que lo que quieres hacer con
> variables no es posible. Ya que la clásula ORDER BY es la última que se
> evalua en cualquier comando SQL. Por lo tanto, en principio sólo te
> funcionaría cuando la ordenación coincidiese con la clave primaria y esta
> fuese utilizada igualmente para el salvado físico de los registros
> (clustered-index).
No hace falta que jures, te creo Es cierto que no se puede presumir
ningun ordenamiento hasta la salida, pero creo que se solucionaría
haciendo el select previo ordenado:
set @total:=0;
select cuenta, fecha,debe, haber, @total:= debe-haber+@total as Saldo from
( select cuenta, fecha, debe, haber from Mayor ORDER BY cuenta, fecha
WHERE ... )
De todas maneras, el tema era ver como resolver una columna de
acumulados en la misma consulta, que es un patron de consultas bastante
frecuente y que no está contemplado en el SQL estandar.
Solo por curiosidad y aprovechando tu conocimiento de MS SQL Server: ¿Se
pueden usar las variables así como en el ejemplo (dialecto MySQL) ?
Un saludo,
Carlos.
> Si te funciona, estupendo. Pero juraría que lo que quieres hacer con
> variables no es posible. Ya que la clásula ORDER BY es la última que se
> evalua en cualquier comando SQL. Por lo tanto, en principio sólo te
> funcionaría cuando la ordenación coincidiese con la clave primaria y esta
> fuese utilizada igualmente para el salvado físico de los registros
> (clustered-index).
No hace falta que jures, te creo Es cierto que no se puede presumir
ningun ordenamiento hasta la salida, pero creo que se solucionaría
haciendo el select previo ordenado:
set @total:=0;
select cuenta, fecha,debe, haber, @total:= debe-haber+@total as Saldo from
( select cuenta, fecha, debe, haber from Mayor ORDER BY cuenta, fecha
WHERE ... )
De todas maneras, el tema era ver como resolver una columna de
acumulados en la misma consulta, que es un patron de consultas bastante
frecuente y que no está contemplado en el SQL estandar.
Solo por curiosidad y aprovechando tu conocimiento de MS SQL Server: ¿Se
pueden usar las variables así como en el ejemplo (dialecto MySQL) ?
Un saludo,
Carlos.
Columna de saldo acumulado
Hola:
en SQL server me da este mensaje
No debe combinarse una instrucción SELECT que asigne un valor a una
variable con operaciones de recuperación de datos.
Miguel A. Torrellas
Carlos Mora escribió:
> José Luis,
>
>> Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
>> puede tener su sentido dado que los acumuladores no saben que fila hay
>> antes ni después.
>>
>> De hecho, tampoco existe nada parecido en xbase.
>
> Era cuestión de buscar, nomás.
>
> Para MySQL:
>
> set @total:=0;
> select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo from
> MAYOR where ...;
>
> faltaba saber la historia de usar variables nomás. Gracias por tu interés,
>
> Carlos
en SQL server me da este mensaje
No debe combinarse una instrucción SELECT que asigne un valor a una
variable con operaciones de recuperación de datos.
Miguel A. Torrellas
Carlos Mora escribió:
> José Luis,
>
>> Bueno... no se si es extraño o no... Pero, desde mi cortita experiencia,
>> puede tener su sentido dado que los acumuladores no saben que fila hay
>> antes ni después.
>>
>> De hecho, tampoco existe nada parecido en xbase.
>
> Era cuestión de buscar, nomás.
>
> Para MySQL:
>
> set @total:=0;
> select cuenta, fecha,debe, haber, @total:=AmtPaid+@total as Saldo from
> MAYOR where ...;
>
> faltaba saber la historia de usar variables nomás. Gracias por tu interés,
>
> Carlos
Columna de saldo acumulado
Si usa un procedimiento almacenado sí seguro...
Carlos Mora escribió:
> Ignacio,
>> Si te funciona, estupendo. Pero juraría que lo que quieres hacer con
>> variables no es posible. Ya que la clásula ORDER BY es la última que
>> se evalua en cualquier comando SQL. Por lo tanto, en principio sólo te
>> funcionaría cuando la ordenación coincidiese con la clave primaria y
>> esta fuese utilizada igualmente para el salvado físico de los
>> registros (clustered-index).
> No hace falta que jures, te creo Es cierto que no se puede presumir
> ningun ordenamiento hasta la salida, pero creo que se solucionaría
> haciendo el select previo ordenado:
>
> set @total:=0;
> select cuenta, fecha,debe, haber, @total:= debe-haber+@total as Saldo from
> ( select cuenta, fecha, debe, haber from Mayor ORDER BY cuenta, fecha
> WHERE ... )
>
> De todas maneras, el tema era ver como resolver una columna de
> acumulados en la misma consulta, que es un patron de consultas bastante
> frecuente y que no está contemplado en el SQL estandar.
>
> Solo por curiosidad y aprovechando tu conocimiento de MS SQL Server: ¿Se
> pueden usar las variables así como en el ejemplo (dialecto MySQL) ?
>
> Un saludo,
>
> Carlos.
Carlos Mora escribió:
> Ignacio,
>> Si te funciona, estupendo. Pero juraría que lo que quieres hacer con
>> variables no es posible. Ya que la clásula ORDER BY es la última que
>> se evalua en cualquier comando SQL. Por lo tanto, en principio sólo te
>> funcionaría cuando la ordenación coincidiese con la clave primaria y
>> esta fuese utilizada igualmente para el salvado físico de los
>> registros (clustered-index).
> No hace falta que jures, te creo Es cierto que no se puede presumir
> ningun ordenamiento hasta la salida, pero creo que se solucionaría
> haciendo el select previo ordenado:
>
> set @total:=0;
> select cuenta, fecha,debe, haber, @total:= debe-haber+@total as Saldo from
> ( select cuenta, fecha, debe, haber from Mayor ORDER BY cuenta, fecha
> WHERE ... )
>
> De todas maneras, el tema era ver como resolver una columna de
> acumulados en la misma consulta, que es un patron de consultas bastante
> frecuente y que no está contemplado en el SQL estandar.
>
> Solo por curiosidad y aprovechando tu conocimiento de MS SQL Server: ¿Se
> pueden usar las variables así como en el ejemplo (dialecto MySQL) ?
>
> Un saludo,
>
> Carlos.
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
Manu,
> Si usa un procedimiento almacenado sí seguro...
pero según Miguel no se puede en un select, asi es que habrá que definir
la función ACUM... si es que no la tiene ya.
Por lo visto hay implementaciones de esa función como UDF para MySQL,
postgres y firebird, por lo que no sería extraño que ya la tengas
disponible.
Saludos
> Si usa un procedimiento almacenado sí seguro...
pero según Miguel no se puede en un select, asi es que habrá que definir
la función ACUM... si es que no la tiene ya.
Por lo visto hay implementaciones de esa función como UDF para MySQL,
postgres y firebird, por lo que no sería extraño que ya la tengas
disponible.
Saludos
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
Columna de saldo acumulado
Miguel,
> en SQL server me da este mensaje
>
> No debe combinarse una instrucción SELECT que asigne un valor a una
> variable con operaciones de recuperación de datos.
Lo mio es rayano al onanismo mental, dijera Antonio Ortega
La solución genérica es via una theta join, y usando el ID como parte
del orden, ya que se requiere una clave única para cada registro
select
t1.id, t1.cuenta, t1.fecha, t1.debe, t1.haber, sum( t2.debe ) as
TDebe, Sum(t2.haber)as THaber, tdebe-thaber
from
Mayor as t1 inner join Mayor as t2 on (t1.cuenta, t1.fecha, t1.id)
>= ( t2.cuenta, t2.fecha, t2.id ) group by t1.cuenta, t1.fecha, t1.id
order by t1.cuenta, t1.fecha, t1.id
No estoy seguro si con SQL server se pueden poner las comparaciones como
las puse en parentesis, pero la idea creo que se entiende y si no
funciona sería cuestion de currársela haciendo la comparacion a pelo
t1.cuenta > t2.cuenta or ( ( t1. cuenta = t2.cuenta ) and ( t1.fecha
>t2.fecha OR (t1.fecha=t2.fecha AND t1.id >= t2.ID) ) )
> en SQL server me da este mensaje
>
> No debe combinarse una instrucción SELECT que asigne un valor a una
> variable con operaciones de recuperación de datos.
Lo mio es rayano al onanismo mental, dijera Antonio Ortega
La solución genérica es via una theta join, y usando el ID como parte
del orden, ya que se requiere una clave única para cada registro
select
t1.id, t1.cuenta, t1.fecha, t1.debe, t1.haber, sum( t2.debe ) as
TDebe, Sum(t2.haber)as THaber, tdebe-thaber
from
Mayor as t1 inner join Mayor as t2 on (t1.cuenta, t1.fecha, t1.id)
>= ( t2.cuenta, t2.fecha, t2.id ) group by t1.cuenta, t1.fecha, t1.id
order by t1.cuenta, t1.fecha, t1.id
No estoy seguro si con SQL server se pueden poner las comparaciones como
las puse en parentesis, pero la idea creo que se entiende y si no
funciona sería cuestion de currársela haciendo la comparacion a pelo
t1.cuenta > t2.cuenta or ( ( t1. cuenta = t2.cuenta ) and ( t1.fecha
>t2.fecha OR (t1.fecha=t2.fecha AND t1.id >= t2.ID) ) )
- ignacio
- Site Admin
- Mensajes: 9309
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Columna de saldo acumulado
Carlos,
En mi opinión la única forma de hacerlo es que la columna de saldo sea otra
select que SUME los saldos hasta el mismo registro que procesa. Mira la
documentación de la BD que estes usando para hacer SELECTS anidados.
En cualquier caso te puedes imaginar que como haya muchas filas al servidor
le puede hacer bastante pupa, y tiene sentido que calcules tu el saldo en
vez del servidor.
Un saludo,
"Carlos Mora" <carlosmora@iespana.es> wrote in message
news:[email=45215c1f@news.xailer.com...]45215c1f@news.xailer.com...[/email]
> Miguel,
>
>> en SQL server me da este mensaje
>>
>> No debe combinarse una instrucción SELECT que asigne un valor a una
>> variable con operaciones de recuperación de datos.
>
> Lo mio es rayano al onanismo mental, dijera Antonio Ortega
>
> La solución genérica es via una theta join, y usando el ID como parte del
> orden, ya que se requiere una clave única para cada registro
>
> select
> t1.id, t1.cuenta, t1.fecha, t1.debe, t1.haber, sum( t2.debe ) as TDebe,
> Sum(t2.haber)as THaber, tdebe-thaber
> from
> Mayor as t1 inner join Mayor as t2 on (t1.cuenta, t1.fecha, t1.id)
> >= ( t2.cuenta, t2.fecha, t2.id ) group by t1.cuenta, t1.fecha, t1.id
> order by t1.cuenta, t1.fecha, t1.id
>
> No estoy seguro si con SQL server se pueden poner las comparaciones como
> las puse en parentesis, pero la idea creo que se entiende y si no funciona
> sería cuestion de currársela haciendo la comparacion a pelo
>
> t1.cuenta > t2.cuenta or ( ( t1. cuenta = t2.cuenta ) and ( t1.fecha
> >t2.fecha OR (t1.fecha=t2.fecha AND t1.id >= t2.ID) ) )
En mi opinión la única forma de hacerlo es que la columna de saldo sea otra
select que SUME los saldos hasta el mismo registro que procesa. Mira la
documentación de la BD que estes usando para hacer SELECTS anidados.
En cualquier caso te puedes imaginar que como haya muchas filas al servidor
le puede hacer bastante pupa, y tiene sentido que calcules tu el saldo en
vez del servidor.
Un saludo,
"Carlos Mora" <carlosmora@iespana.es> wrote in message
news:[email=45215c1f@news.xailer.com...]45215c1f@news.xailer.com...[/email]
> Miguel,
>
>> en SQL server me da este mensaje
>>
>> No debe combinarse una instrucción SELECT que asigne un valor a una
>> variable con operaciones de recuperación de datos.
>
> Lo mio es rayano al onanismo mental, dijera Antonio Ortega
>
> La solución genérica es via una theta join, y usando el ID como parte del
> orden, ya que se requiere una clave única para cada registro
>
> select
> t1.id, t1.cuenta, t1.fecha, t1.debe, t1.haber, sum( t2.debe ) as TDebe,
> Sum(t2.haber)as THaber, tdebe-thaber
> from
> Mayor as t1 inner join Mayor as t2 on (t1.cuenta, t1.fecha, t1.id)
> >= ( t2.cuenta, t2.fecha, t2.id ) group by t1.cuenta, t1.fecha, t1.id
> order by t1.cuenta, t1.fecha, t1.id
>
> No estoy seguro si con SQL server se pueden poner las comparaciones como
> las puse en parentesis, pero la idea creo que se entiende y si no funciona
> sería cuestion de currársela haciendo la comparacion a pelo
>
> t1.cuenta > t2.cuenta or ( ( t1. cuenta = t2.cuenta ) and ( t1.fecha
> >t2.fecha OR (t1.fecha=t2.fecha AND t1.id >= t2.ID) ) )