Enigma de SQL, cómo seleccionar la última fecha para la parte, pero solo 1 fila por parte (única)
Estoy tratando de entender esto esta mañana.
Estoy tratando de mostrarinventory
estado para partes (para nuestros productos) y esta consulta solo se vuelve compleja si intento devolver todas las partes.
Déjame exponerlo:
mesa individualinventoryReport
Tengo una lista distinta de X partes que deseo mostrar, cuyo resultado debe ser X # de filas (1 fila por parte que muestra la última entrada de inventario).la tabla está compuesta por entradas fechadas de cambios de inventario (por lo que solo necesito elLATEST
fecha de entrada por parte).todos los datos contenidos en esta tabla única, por lo que no se necesitan uniones.Actualmente para 1 sola parte, es bastante simple y puedo lograr esto haciendo el siguiente sql (para darle una idea):
SELECT TOP (1) ldDate, ptProdLine, inPart, inSite, inAbc, ptUm, inQtyOh + inQtyNonet AS in_qty_oh, inQtyAvail, inQtyNonet, ldCustConsignQty, inSuppConsignQty
FROM inventoryReport
WHERE (ldPart = 'ABC123')
ORDER BY ldDate DESC
eso me da mi fila TOP 1, tan simple por parte, sin embargo, necesito mostrar todas las X (digamos 30 partes). Entonces necesito 30 filas, con ese resultado. Por supuesto, la solución simple sería hacer un bucle X # de llamadas sql en mi código (pero sería costoso) y eso sería suficiente, pero para este propósito me encantaría trabajar este SQL un poco más para reducir las llamadas x # a la base de datos (si no es necesario) a solo 1 consulta.
Por lo que puedo ver aquí, necesito hacer un seguimiento de la última fecha por elemento de alguna manera mientras busco mi conjunto de resultados.
En última instancia, haría un
WHERE ldPart in ('ABC123', 'BFD21', 'AA123', etc)
para limitar las partes que necesito. Espero haber hecho mi pregunta lo suficientemente clara. Avísame si tienes una idea. No puedo hacer unDISTINCT
Como las filas no son iguales, la fecha debe ser la última y necesito un máximo de X filas.
Pensamientos? Estoy atascado...