Nuevamente con lo del top 5

21/05/2004 - 21:47 por Cesar Ochica | Informe spam
Bueno inicialmente me esta ayudando el gran Ulises pero al parecer se ha
desconectado por un rato.

E inicio este nuevo hilo por que yo no he podido dar solucion al problema y
es muy urgente para mi.


OK, tengo una sola tabla en la que esta la informacion de los Movimientos de
los Productos.

TipoDoc Char(1) ' Indica si es Factura 'F' o Compra 'P'
NumDoc Decimal 'Numero del Documento
AnoDoc Int16 'Año de el documento
MesDoc Int16 'Mes del documento
DiaDoc Int16 'Dia del documento
Tercero string ' Es el nombre del tercero a quie se le vendio o se le compro
MovCta Decimal 'Cuenta movida por el documento
PID Decimal 'es la llave del producto movido
PDes String 'Es la descripcion del doc Movido
CantidadMov Int16 'Cantidad de articulos Movidos
ValorMov Decimal 'Valor de articulos movidos


Y tengo el programa externo que consulta las facturas y cuando se ve
una factura quiero que envie el numero de la factura y el store con el
numero de la factura averigue que articulos movio esa factura y retorne los
cinco ultimos movimientos de cada articulo.

Por ejemplo estoy viendo la factura 4049 y esta tiene tres articulos
entonces el store recibe el numero de factura y ubica los PID de los
articulos movidos (3 para el ejemplo) y retorna los cinco ultimos
movimientos de cada uno (o sea 15 registros).

Gracias
 

Leer las respuestas

#1 Javier Loria
23/05/2004 - 05:09 | Informe spam
Hola Cesar:
Prueba con :
SELECT ProductosOrdenados.NumDoc
, ProductosOrdenados.Pid
FROM ( SELECT PID
FROM Movimientos
WHERE
) AS ProductosenOrden
JOIN ( SELECT M1.NumDoc
, M1.Pid
, COUNT(*) AS Orden
FROM Movimientos AS M1
JOIN Movimientos AS M2
ON M1.NumDoc<=M2.NumDoc
AND M1.Pid=M2.PID
GROUP BY M1.NumDoc, M1.Pid
) AS ProductosOrdenados
ON ProductosenOrden.Pid=ProductosOrdenados.Pid
WHERE ProductosOrdenados.Pid<=5
Espero te sirva porque va sin probar y puede tener problemas de sintaxis
y definitivamente debe ser lento.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Cesar Ochica escribio:
Bueno inicialmente me esta ayudando el gran Ulises pero al parecer se
ha desconectado por un rato.

E inicio este nuevo hilo por que yo no he podido dar solucion al
problema y es muy urgente para mi.


OK, tengo una sola tabla en la que esta la informacion de los
Movimientos de los Productos.

TipoDoc Char(1) ' Indica si es Factura 'F' o Compra 'P'
NumDoc Decimal 'Numero del Documento
AnoDoc Int16 'Año de el documento
MesDoc Int16 'Mes del documento
DiaDoc Int16 'Dia del documento
Tercero string ' Es el nombre del tercero a quie se le vendio o se le
compro MovCta Decimal 'Cuenta movida por el documento
PID Decimal 'es la llave del producto movido
PDes String 'Es la descripcion del doc Movido
CantidadMov Int16 'Cantidad de articulos Movidos
ValorMov Decimal 'Valor de articulos movidos


Y tengo el programa externo que consulta las facturas y cuando se ve
una factura quiero que envie el numero de la factura y el store con el
numero de la factura averigue que articulos movio esa factura y
retorne los cinco ultimos movimientos de cada articulo.

Por ejemplo estoy viendo la factura 4049 y esta tiene tres articulos
entonces el store recibe el numero de factura y ubica los PID de los
articulos movidos (3 para el ejemplo) y retorna los cinco ultimos
movimientos de cada uno (o sea 15 registros).

Gracias

Preguntas similares