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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 SergioT
13/06/2005 - 15:54 | Informe spam
Estimado Elmer

Gracias por tu tiempo pero t cuento q no funca bien :(
El problema es que el subquery no está ordenado de la misma forma que el
query resultante, si corres con los datos q t envié sale:

Item Nombre Ndoc Fecha
Ingreso Salida Saldo Debia Ser
a Compras 565 2005-01-01 00:00:00.000 10
0 10 10
a Salidas 15 2005-02-01 00:00:00.000 0
5 5 5
a Ventas 51 2005-02-01 00:00:00.000 0
2 8 3
a Compras 566 2005-03-01 00:00:00.000 10
0 13 13
a Ventas 53 2005-03-01 00:00:00.000 0
3 0 10
a Ventas 52 2005-03-01 00:00:00.000 0
1 2 9

En la columna "Debia Ser" t coloco los valores que deberían salir, si t
fijas, formalizando :

SaldoFecha X = Saldo Fecha (x-1) + Ingresos Fecha X - Egresos
Fecha X

Haber si me podes ayudar un poco mas :)
Salu2
GRACIAS POR TU TIEMPO

"Elmer Carías" wrote in message
news:
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






Respuesta Responder a este mensaje
#3 Elmer Carías
14/06/2005 - 01:47 | Informe spam
Si pero lo que te comente es que deberias guardar las fechas con todo y
hora, y con eso es suficiente para que corra el query que te envie.

Realiza esos cambios a la aplicación que los guarda, y ya esta

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



"SergioT" wrote in message
news:%
Estimado Elmer

Gracias por tu tiempo pero t cuento q no funca bien :(
El problema es que el subquery no está ordenado de la misma forma que el
query resultante, si corres con los datos q t envié sale:

Item Nombre Ndoc Fecha Ingreso Salida Saldo Debia Ser
a Compras 565 2005-01-01 00:00:00.000 10 0
10 10
a Salidas 15 2005-02-01 00:00:00.000 0 5
5 5
a Ventas 51 2005-02-01 00:00:00.000 0 2
8 3
a Compras 566 2005-03-01 00:00:00.000 10 0
13 13
a Ventas 53 2005-03-01 00:00:00.000 0 3
0 10
a Ventas 52 2005-03-01 00:00:00.000 0 1
2 9

En la columna "Debia Ser" t coloco los valores que deberían salir, si t
fijas, formalizando :

SaldoFecha X = Saldo Fecha (x-1) + Ingresos Fecha X - Egresos
Fecha X

Haber si me podes ayudar un poco mas :)
Salu2
GRACIAS POR TU TIEMPO

"Elmer Carías" wrote in message
news:
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










email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida