Cambiar SubConsulta a relacion Left Outer Join

02/04/2008 - 18:57 por Antonio Ortiz | Informe spam
Agradeceria me ayudaran para cambiar esta consulta con una subconsulta de la
forma Left Outer Join, pues necesito obtener mas de 1 columna de la tabla
TbaKardex y de esta manera no me es posible, a menos que repita la consulta
para cada columna.

SELECT IDProducto, Codigo, Descripcion,
ISNULL(SELECT TOP 1 ExistenciaFinal
FROM TbaKardex
WHERE (Fecha BETWEEN '20080215 00:00' AND
'20080215 13:59') AND (TbaKardex.IDProducto = TbaProducto.IDProducto)
ORDER BY IDKardex DESC).0) AS ExistenciaFinal
FROM TbaProducto


gracias de antemano,


Antonio Ortiz
asesor en sistemas
www.aortiz.net
www.progvisual.com

Preguntas similare

Leer las respuestas

#1 Maxi Accotto
03/04/2008 - 02:07 | Informe spam
Hola, sin saber como son las tablas, los datos y que esperas como resultado
se me hace por lo menos a mi muy dificil ayudarte!

Pasame la estructura de las tablas, ejemplos de datos y que buscas obtener


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Antonio Ortiz" escribió en el mensaje de
noticias:#
Mostrar la cita
#2 Antonio Ortiz
03/04/2008 - 02:48 | Informe spam
ok, va mas informacion

Tabla: TbaKardex
IDKardex
Fecha {Contiene Fecha y hora
IDProducto
ExistenciaInicial
Cantidad
ExistenciaFinal

Tabla: TbaProducto
IDProducto
Codigo
Descripcion


-> La tabla TbaKardex contiene un registro por cada movimiento que afecta el
inventario, como puede ser: Compra, Venta, Entrada, Salida, Traspaso, lo
unico que necesito es que me diga el inventario que habia de cada producto a
una fecha (al final del dia). Si el producto no tuvo movimientos en la fecha
seleccionada, se toma existencia final del movimiento anterior. Si no existe
movimiento anterior a la fecha seleccionada la existencia sera 0.


gracias por tu tiempo,


Antonio Ortiz
asesor en sistemas
www.aortiz.net
www.progvisual.com



"Maxi Accotto" escribió en el mensaje
news:%
Mostrar la cita
#3 Maxi Accotto
04/04/2008 - 01:34 | Informe spam
Antonio, quiero ayudarte pero creo que nos debemos ayudar de forma mutua no?
te pido por favor que me pases lo que te he solicitado,

La estructura, algunos datos de ejemplo, y que buscas como resultado con
datos, o sea como deberia quedar el resultado segun los datos de ejemplo.
Porque el diseño de tu aplicacion lo conoces bien tu, yo puedo tirar quizas
una query aqui que ni te ayude.

Pasame eso si y vemos como resolver el problema


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Antonio Ortiz" escribió en el mensaje de
noticias:
Mostrar la cita
#4 Antonio Ortiz
04/04/2008 - 02:31 | Informe spam
Despues de intentar varias veces de distintas maneras logre hacerlo de esta
manera:

SELECT IDProducto, Codigo, Descripcion, ISNULL
((SELECT TOP 1 ExistenciaFinal
FROM TbaKardex
WHERE (Fecha BETWEEN '20080215 00:00' AND
'20080215 13:59') AND (TbaKardex.IDProducto = TbaProducto.IDProducto)
ORDER BY IDKardex DESC), 0) AS ExistenciaFinal
FROM TbaProducto


* De cualquier manera te pongo los datos de ejemplo por si hay una mejor
forma de hacer la consulta:



TbaProducto
{ IDProducto, Codigo, Descripcion }

1, 100, Coca Cola
2, 120, Pepsi
3, 90, Fanta
4, 200, Sprite


TbaKardex
{ IDKardex, Fecha, IDProducto, ExistenciaInicial, Cantidad,
ExistenciaFinal }
1000, 14/02/2008 11:30, 2, 10, 1, 9
1000, 14/02/2008 11:30, 2, 9, 1, 8
1000, 14/02/2008 11:30, 3, 5, 1, 4
1001, 14/02/2008 15:48, 1, 18, 1, 17
1000, 15/02/2008 09:02, 1, 17, 1, 16
1000, 15/02/2008 09:14, 3, 4, 1, 3
1000, 15/02/2008 09:02, 1, 16, 1, 15
1000, 15/02/2008 10:49, 1, 15, 1, 14


Con la consulta deberia obtener:

1, Coca Cola, 14
2, Pepsi, 8
3, Fanta, 3
4, Sprite, 0


Gracias por tu tiempo,

Antonio Ortiz
asesor en sistemas
www.aortiz.net
www.progvisual.com



"Maxi Accotto" escribió en el mensaje
news:
Mostrar la cita
#5 Antonio Ortiz
04/04/2008 - 02:38 | Informe spam
Correcion, la consulta que me funciono es esta:

SELECT TbaProducto.IDProducto, TbaProducto.Codigo, TbaProducto.Descripcion,
IsNull(K.ExistenciaInicial,0) as ExistenciaInicial, IsNull(K.Cantidad,0) as
Cantidad, IsNull(K.ExistenciaFinal,0) as ExistenciaFinal
FROM TbaProducto
LEFT OUTER JOIN
( SELECT TbaKardex.* FROM TbaKardex INNER JOIN ( SELECT TbaKardex.IDProducto
AS IDProducto, MAX(IDKardex) AS IDKardex
FROM TbaKardex WHERE (Fecha <= '20080215 23:59:59.99') And (IDAlmacen=1)
GROUP BY TbaKardex.IDProducto ) K2 ON TbaKardex.IDKardex=K2.IDKardex ) K
ON TbaProducto.IDProducto = K.IDProducto


Antonio Ortiz
asesor en sistemas
www.aortiz.net
www.progvisual.com



"Antonio Ortiz" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida