Ayuda con una Consulta

09/06/2005 - 15:53 por SergioT | Informe spam
Hola

Tengo una consulta q según yo no era tan ddificil pero que no la puedo
sacar, basicamente la idea es emitir un kardex de stock de un item y ordenar
el kardex por fecha e ingresos y salidas, lo que no puedo hasta ahora es
aumentarle una columna de saldo

TIPOS(Tipo,Nombre, Salida) = Tipos de transaccion de inventarios
TABLA(NroDoc, Item, Fecha,Tipo, CantIng,CantSal) = Detalle de Mov. de
inventario

En realidad un ejemplo de datos seria:

TIPOS TIpo Nombre Salida
1 Compras 0
2 Salidas 1
3 Ventas 1

TABLA
Item Tipo NroDoc Fecha CantIng CantSal
a 1 565 01/01/2005 10 0
b 1 565 01/01/2005 05 0
c 1 565 01/01/2005 12 0
a 2 15 02/01/2005 0 5
b 2 20 02/01/2005 0 9
a 3 51 02/01/2005 0 2
b 2 05 03/01/2005 0 9
a 3 52 03/01/2005 0 1
a 3 53 03/01/2005 0 3
a 1 566 03/01/2005 10 0


Consulta del kardex para el item 'a' debe sacar:

Item Nombre NroDoc Fecha CantIng CantSal
Saldo
a Compras 565 01/01/2005 10
10
a Salidas 15 02/01/2005 5
5
a Ventas 51 02/01/2005 2
3
a Compras 566 03/01/2005 10
13
a Ventas 52 03/01/2005 1
12
a Ventas 53 03/01/2005 3
9

Aqui envio un script de ejemplo con la creacion de los datos de prueba de
arriba, para que les sea mas facil ayudarme :)

use northwind
go

create table TIPOS (
TIPO smallint not null,
Nombre varchar(20) not null,
EsSalida bit not null
)
go
create table TABLA (
Item varchar(15) not null,
Tipo smallint not null,
NroDoc int not null,
Fecha datetime not null,
CantIng int not null,
CantSal int not null
)
insert into tipos values(1, 'Compras',0)
insert into tipos values(2, 'Salidas',1)
insert into tipos values(3, 'Ventas',1)
go

insert into tabla values('a',1,565,'01/01/2005',10,0)
insert into tabla values('b',1,565,'01/01/2005',5,0)
insert into tabla values('c',1,565,'01/01/2005',12,0)
insert into tabla values('a',2,15,'002/01/2005',0,5)
insert into tabla values('b',2,20,'02/01/2005',0,9)
insert into tabla values('a',3,51,'02/01/2005',0,2)
insert into tabla values('b',2,05,'03/01/2005',0,9)
insert into tabla values('a',3,52,'03/01/2005',0,1)
insert into tabla values('a',3,53,'03/01/2005',0,3)
insert into tabla values('a',1,566,'03/01/2005',10,0)
go

/*Muestro los datos de ejemplo*/
select * from tipos
select * from tabla

/*Aqui esta la consulta en la que necesito ayuda para aumentarle la columna
Saldo
=*/
select m.item, t.nombre,m.NroDoc,
fecha,canting,cantsal
From Tabla M inner join tipos T on M.tipo=T.tipo
where m.item='a'
Order by M.fecha,t.essalida
/*=*/
drop table tipos
drop table tabla
go



Salu2 y gracias
 

Leer las respuestas

#1 Elmer Carías
09/06/2005 - 21:49 | Informe spam
Utiliza el siguiente query:

select m.item, t.nombre,m.NroDoc,
fecha,canting,cantsal ,
(select isnull(sum(A.canting),0) - isnull(sum(A.cantsal),0) + M.canting -
M.cantsal
from Tabla A
where A.item = M.item
and A.fecha<M.fecha) as Saldo
From Tabla M inner join tipos T on M.tipo=T.tipo
where m.item='a'
Order by M.fecha,t.essalida

solo que al momento de guardar la fecha de cada transaccion deberias guardar
tambien la hora, y asi si sale con el SubQuery anidado

O sino deberias tener un correlativo por Dia o correlativo generico.

Atte. Elmer Carías
El Salvador, CentroAmerica
DCE 3
MSN:


"SergioT" wrote in message
news:
Hola

Tengo una consulta q según yo no era tan ddificil pero que no la puedo
sacar, basicamente la idea es emitir un kardex de stock de un item y
ordenar el kardex por fecha e ingresos y salidas, lo que no puedo hasta
ahora es aumentarle una columna de saldo

TIPOS(Tipo,Nombre, Salida) = Tipos de transaccion de inventarios
TABLA(NroDoc, Item, Fecha,Tipo, CantIng,CantSal) = Detalle de Mov. de
inventario

En realidad un ejemplo de datos seria:

TIPOS TIpo Nombre Salida
1 Compras 0
2 Salidas 1
3 Ventas 1

TABLA
Item Tipo NroDoc Fecha CantIng CantSal
a 1 565 01/01/2005 10 0
b 1 565 01/01/2005 05 0
c 1 565 01/01/2005 12 0
a 2 15 02/01/2005 0 5
b 2 20 02/01/2005 0 9
a 3 51 02/01/2005 0 2
b 2 05 03/01/2005 0 9
a 3 52 03/01/2005 0 1
a 3 53 03/01/2005 0 3
a 1 566 03/01/2005 10 0


Consulta del kardex para el item 'a' debe sacar:

Item Nombre NroDoc Fecha CantIng CantSal
Saldo
a Compras 565 01/01/2005 10 10
a Salidas 15 02/01/2005 5 5
a Ventas 51 02/01/2005 2 3
a Compras 566 03/01/2005 10 13
a Ventas 52 03/01/2005 1 12
a Ventas 53 03/01/2005 3 9

Aqui envio un script de ejemplo con la creacion de los datos de prueba de
arriba, para que les sea mas facil ayudarme :)

use northwind
go

create table TIPOS (
TIPO smallint not null,
Nombre varchar(20) not null,
EsSalida bit not null
)
go
create table TABLA (
Item varchar(15) not null,
Tipo smallint not null,
NroDoc int not null,
Fecha datetime not null,
CantIng int not null,
CantSal int not null
)
insert into tipos values(1, 'Compras',0)
insert into tipos values(2, 'Salidas',1)
insert into tipos values(3, 'Ventas',1)
go

insert into tabla values('a',1,565,'01/01/2005',10,0)
insert into tabla values('b',1,565,'01/01/2005',5,0)
insert into tabla values('c',1,565,'01/01/2005',12,0)
insert into tabla values('a',2,15,'002/01/2005',0,5)
insert into tabla values('b',2,20,'02/01/2005',0,9)
insert into tabla values('a',3,51,'02/01/2005',0,2)
insert into tabla values('b',2,05,'03/01/2005',0,9)
insert into tabla values('a',3,52,'03/01/2005',0,1)
insert into tabla values('a',3,53,'03/01/2005',0,3)
insert into tabla values('a',1,566,'03/01/2005',10,0)
go

/*Muestro los datos de ejemplo*/
select * from tipos
select * from tabla

/*Aqui esta la consulta en la que necesito ayuda para aumentarle la
columna
Saldo
=*/
select m.item, t.nombre,m.NroDoc,
fecha,canting,cantsal
From Tabla M inner join tipos T on M.tipo=T.tipo
where m.item='a'
Order by M.fecha,t.essalida
/*=*/
drop table tipos
drop table tabla
go



Salu2 y gracias


Preguntas similares