Obtner último movimiento de un Nº Serie

Hola buenas.

Solicito ayuda para una consulta sql.

Tengo un artículo con control de números de serie y se producen entregas y devoluciones del mismo a lo largo del tiempo. Adjunto imagen de la lista de movientos.

imagen

Pretendo obtener con una consulta sql la última línea que se visualiza, o sea el último movimiento que ha registrado, pero no logro obtenerlo.

Estoy trabajando en esta consulta SQL:

SELECT SRI1.ItemCode, SRI1.SysSerial, SRI1.BaseType, SRI1.BaseEntry, SRI1.BaseNum, SRI1.DocDate, SRI1.CardCode, SRI1.CardName, SRI1.Direction, 
OSRN.AbsEntry, OSRN.SysNumber, OSRN.DistNumber, OSRN.MnfSerial, OSRN.LotNumber, OSRN.InDate, OSRN.ExpDate 
FROM SRI1  
inner join OSRN on SRI1.SysSerial=OSRN.SysNumber 
WHERE SRI1.ItemCode ='47' and OSRN.DistNumber='5342837371241010'

La idea además es generar un listado con todos los números de serie y su último movimiento, que en este caso voy filtrando un número para reducir el tiempo de ejecución y análisis.

Un saludo y gracias anticipadas a quien pueda aportar algo.

Tendrias que compara el maximo numero de linea de la SRI1, algo asi:

Select a,b,c,d
from OSRN
inner join
SRI 1 T0
on OSRN.ItemCode=T0.ItemCode and OSRN.SysNumber=T0.SysSerial
inner join
(
select ItemCode, SysSerial, max(LineNum) as LineNum from SRI1 group by ItemCode, SysSerial
) T1
on T0.ItemCode=T1.ItemCode and T0.SysSerial=T1.SysSerial and T0.LineNum=T1.LineNum
where OSRI.ItemCode='XX' and OSRI.IntrSerial='YY'

Buen día, con el siguiente FROM obtienes el dato, LogEntry es un entero que incrementa con cada nuevo registro de lote o serie y es único por cada linea en documentos.

SELECT 
	/*
		Seleccionams de T0, T1 y T2 los datos que necesitamos 
	*/
	* 
FROM 
	OITL T0
	INNER JOIN ITL1 T1 ON T0.LogEntry = T1.LogEntry
	INNER JOIN OSRN T2 ON T1.ItemCode = T2.ItemCode AND T1.SysNumber = T2.SysNumber 
	INNER JOIN 
		(
			SELECT 
				MAX(A0.LogEntry) [LogEntry] --Mayor LogEntry por cada combinacion Articulo-Serie
				,A0.ItemCode
				,A1.SysNumber
			FROM 
				OITL A0
				INNER JOIN ITL1 A1 ON A0.LogEntry = A1.LogEntry 
				INNER JOIN OSRN A2 ON A1.ItemCode = A2.ItemCode AND A1.SysNumber = A2.SysNumber 
			WHERE 
				A0.ManagedBy = 10000045 
			GROUP BY 
				A0.ItemCode
				,A1.SysNumber
		) T3 ON T0.LogEntry = T3.LogEntry 

1 me gusta

Gracias, voy a revisar con mis datos y les comparto.

1 me gusta

Gracias, compruebo con los datos a ver si lo logro.

1 me gusta

Hola amigo @meqs, ¿Pudiste solucionar este tema?

Me mantengo atento, saludos. :mexico:

No tengo esa consulta fina o definitiva aún.
Pero puedes cerrar el tema ya que no voy a encontrar la solución por mis medios.
Gracias

1 me gusta