FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Mostrar diferencia de dos cálculos !!!
Hola Foro:
Tengo el siguiente problemita y espero que me den una mano con esto. Tengo dos tablas: Tabla: Cuenta Codigo Nombre Tabla: Movimientos Fecha Cod_Cta Tipo_Mov // 'D' -> Débido, 'C' -> Crédito Monto He realizado una consulta para determinar los débidos de una cuenta: Select Sum(Monto) From Movimientos Where Cod_Cta = '01' and Tipo_Mov = 'D' Para el caso de los créditos: Select Sum(Monto) From Movimientos Where Cod_Cta = '01' and Tipo_Mov = 'C' Ahora bien, necesito determinar el balance de la cuenta, es decir, débidos menos créditos, pero la verdad es que no la pego en eso. Las gracias anticipadas, Víctor.- |
#2
|
|||
|
|||
Hola Víctor.
En MySql la siguiente consulta te devolverá el dato que buscas. Select Sum(If(Movimientos.Tipo_mov=’D’,Monto,-Monto)) From Movimientos Where Cod_Cta = '01'; Espero que te sirva. Saludos, Tony.
__________________
TonyG |
#3
|
||||
|
||||
Gracias Tony por la aclaración del tipo de GBD usado. Estoy utilizando InterBase 6 versión 6.
Lamentablemente esa consulta no me funciona en interbase. me envía el siguiente error: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 11 If Statement: Select Sum(If(Movimientos.Tipo_mov=’D’,Monto,-Monto)) From Movimientos Where Cod_Cta = '01' Atte: Víctor.- |
#4
|
|||
|
|||
Hola Víctor.
El error que te devuelve es (si no me equivoco) porque la versión 6 de Interbase no tiene la función IF(). No sé si en la versión 7 la han incorporado o alguna equivalente. Como alternativa puedes hacer dos cosas: a) Haces dos consultas, una para sumar los Débitos y otra para sumar los Créditos y luego restas. b) Te creas un Procedimiento Almacenado (Stored Procedure) que reciba como parámetro la cuenta que quieres consultar y que devuelva el balance de la misma. Si la consulta la haces desde distintos puntos del programa quizás sea más conveniente utilizar la opción b). Espero que esto te sirva de ayuda. Saludos, Tony.
__________________
TonyG |
#5
|
||||
|
||||
Hola, no sé si con esto se complicaría el tema, pero ¿ y si lo haces en una TADOQuery y añades un campo calculado con la diferencia entre debitos y creditos?, de ese modo tendrías linea a línea dicha diferencia.
Suerte, y espero haber apprtado algo.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
#6
|
||||
|
||||
Tony, creo que preferiré la opción 'b', ya que me interesa en estos momentos el manejo de la misma no a nivel de procedimientos almacenados.
Por otra parte, Cabanyaler, gracias por responder e interesarte en mí problemita, pero la verdad es que la consulta que estoy haciendo es desde el IBConsole que trae consigo InterBase 6, es decir, no es a nivel de programación. Las gracias anticipadas, Víctor.- |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|