consulta que de resultado entrada, salida y saldo
Hola foro:
Será posible hacer una conculta que de como resultado la siguiente salida?. La tabla es algo así: Fecha--- Detalle--Cantidad 01/01/07 Compra_____5 02/01/07 Venta_____ -1 03/01/07 Venta_____ -3 04/01/07 Compra____ 2 Y el la salida que necesito es: Fecha--- Detalle--Entrada--Salida--Stock 01/01/07 Compra____5______ 0_____5 02/01/07 Venta_____0______-1_____4 03/01/07 Venta_____0______-3_____1 04/01/07 Compra____2______ 0_____3 Estoy usando InterBase. Bueno, Si alguno tiene una idea le agradeceré infinitamente. |
Hola, una pregunta como haces la entrada y las salidas? las mismas se encuentran en otra tabla? por favor, si no es ninguna molestia podrias explicarnos mas a fondo?.
Saludos. |
Quizá te pueda valer lo siguiente :
Puede ser que tengas entradas y salidas el mismo día, por lo que en la condición de join tendrías que incluír algo más para el cálculo del acumulado, como pudiese ser un código incremental u otra clave. Un saúdo |
Gracias por responder
Hola.
Enecumene, gracias por preguntar. los datos están en una sola tabla y es donde grabo el movimiento de stock, un registro por cada venta. en esa misma tabla se guarda el movimiento cuando se hace una compra. ej, cte--- fecha---- cantidad FC 1 01/01/2007--- -300 (vendí treceintos) FC 2 01/01/2007--- -400 (vendí cuatrocientos) RM 5 01/01/2007--- 1000 (compré mill) entonces necesito hacer la famosa ficha "KARDEX" Articulo xxxxxxxx fecha--detalle--entradas--salidas--stock Saldo anterior-------------------- 1200 01/01/07 fc 1----------------300---900 01/01/07 fc 2 ---------------400---500 01/01/07 RM 5--1000--------------1500 Con respecto a a la Propuesta de IVanzinho, creo que InterBase no soporta esa sintaxis, porque me dan errores por todos lados. Bueno. a seguir probando, y gracias. |
Cita:
Un saúdo. |
La sentencia de Ivanzinho es perfectamente válida en Firebird 1.5 o superior.
Interbase no sé si soporta CASE, al menos en la versión 6.5 que es la que yo utilizaba no existía. En cambio se puede lograr lo mismo con un procedimiento almacenado. Saludos |
El CASE fué introducido en firebird a partir de la versión 1.5 y en interbase en la 7.5, si la versión que tienes es anterior entonces lo mejor, como comento hector, es que lo hagas en un procedimiento almacenado o que actualices a una versión superior.
Un saúdo. |
Gracias
Comenzaré a probar con procedimintos almacenados. Gracias amigos.
|
Ya lo solucioné !!! una parte
Bueno la primer parte fué facil, quedó más o menos así.
Select fecha, detalle, cantidad as entrada, (cantidad * 0) as salida From Movimientos where cantidad > 0 Union Select fecha, detalle, (cantidad * 0) as entrada, (cantidad * -1) as salida From Movimientos where cantidad < 0 (Muy astuto ¿no?) Con esto obtengo entrada y salida, la columna de saldo la hice con una etiqueta de cálculo poniendo Sum(Entrada-salida). No encontré como resolver el saldo en la consulta. Si alguién tiene una idea bienvenido sea. Gracias.:cool: |
Sin UNION
|
Cita:
como quien dice:"Mas vale tarde que nunca":):D:D. Saludos...:) |
Cita:
Personalmente no se como tengas tu Tabla de Stock, en un programa ke ice para Salir de l Universidad mi tabla tiene Periodo idarticulo cantidadinicial cantidadanterior cantidadActual NumeroEntradas NumeroSalidas TotalMovimiento y mi query la lanzo asi. qryPeriodo.Close; qryPeriodo.ParamByName('Periodo').AsString := dbe_periodo.Text; qryPeriodo.Open; if qryPeriodo.IsEmpty then ShowMessage('error') else While Not qryperiodo.Eof Do Begin qryperiodo2.Open; qryperiodo2.Edit; qryperiodo2Periodo.Value := dbe_sigperiodo.text; qryperiodo2idarticulo.value := qryperiodoIdArticulo.Value; qryperiodo2ExistenciaInicial.Value := qryperiodoExistenciaFinal.Value; qryperiodo2ExistenciaActual.Value := qryperiodo2ExistenciaInicial.Value; qryperiodo2CostoProInicial.Value := qryperiodoCostoProActual.Value; qryPeriodo2.Post; qryperiodo2.Close; qryperiodo.Next; end; except on e:exception do begin showmessage(e.message); end; end; Espero te sirva de algo lo hice con Firebird 1.5 Saludos.. |
La franja horaria es GMT +2. Ahora son las 01:21:47. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi