Consulta de Tipo Kardex Con Formato de Cortes

09/01/2008 - 19:08 por Dany Acosta | Informe spam
Amigos,
necesito hacer una consulta tipo kardex con pura sentencia SQL y tener el
siguiente resultado

Prod Fecha Det. Mov Ingreso Salida Saldo
XXX 01/01/2007 Saldo Anterior 0 0 800
XXX 14/12/2007 Ventas 0 1 799
XXX 15/12/2007 Inv. Fisico 0 0 30 --> Aca existe nuevo saldo inicial debido
a corte de Inv.
XXX 18/12/2007 Compras 64 0 94
XXX 18/12/2007 Muestras 0 1 93
XXX 18/12/2007 Compras 1 0 94
XXX 18/12/2007 Inv. Fisico 0 0 50 --> Aca existe nuevo saldo inicial debido
a corte de Inv.
XXX 31/12/2007 Ventas 0 4 46
XXX 31/12/2007 Ventas 0 7 39


Como puedo llegar a esto.

Tablas participantes

D_kardex
Prod_Pk char (8)
Fecha datetime
Det_Mov v(50)
Ingreso decimal (10,2)
Salida decima(10,2)

D_Inve
Prod_Pk char(8)
Fecha datetime
Det_Mov v(50)
Cant_Inve decimal (10,2)


Desde ya muchas gracias por toda la informacin que me puedan brindar

Dany Acosta - Developers

Preguntas similare

Leer las respuestas

#6 Dany Acosta
11/01/2008 - 23:49 | Informe spam
Gracias amigo carlos... eres un maestro-. Tendre en cuenta tu
recomendación


Dany Acosta - Developers

"Carlos M. Calvelo" escribió en el mensaje de
noticias:
Hola Dany,

On 11 jan, 15:35, "Dany Acosta" wrote:
Gracias maxi por todo el apoyo que me estas dando Yo ya estoy a punto
de
Usar Cursores como ultimo recurso.




Aquí abajo te dejo una solución.

Se asumen dos cosas:
1) no se debe producir mas mas que un corte en una fecha
2) 'docuid_movi' es único dentro de un grupo de movimentos
con la misma fecha.

Saludos,
Carlos
-
select A.Fecha, A.DetMov, A.Ingreso, A.Salida, A.Saldo
from
(
select
0 as tipo,
docuid_movi,
fec_documovi as Fecha,
des_vta as DetMov,
ingreso as Ingreso,
salida as Salida,
(isnull((select cant_corte
from d_movcorte
where fec_docu_corte > (select max(fec_docu_corte) from d_movcorte
where fec_docu_corte < K.fec_documovi)),0))
+
(select isnull(sum(ingreso-salida),0)
from d_movikard
where (fec_documovi < K.fec_documovi or
(fec_documovi = K.fec_documovi and
docuid_movi <= K.docuid_movi))
and fec_documovi >
isnull((select max(fec_docu_corte)
from d_movcorte
where fec_docu_corte < K.fec_documovi),0)) as Saldo
from d_movikard K
union
select 1 as tipo,
0 as docuid_movi,
fec_docu_corte as Fecha,
des_corte as DetMov,
0 as Ingreso,
0 as Salida,
cant_corte as Saldo
from d_movcorte
) A
order by A.Fecha,A.Tipo,A.docuid_movi
-
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida