Estoy tratando de entender esto esta mañana.enigma SQL, cómo seleccionar la fecha más reciente para la pieza, pero solo 1 fila por cada parte (única)
Estoy tratando de mostrar el estado inventory
para las piezas (para nuestros productos) y esta consulta solo se vuelve compleja si intento devolver todas las piezas.
Déjame ponerlo hacia fuera:
- sola tabla
inventoryReport
- Tengo una lista distinta de las partes X Deseo mostrar, cuyo resultado debe ser X # de filas (1 fila por cada parte mostrando la última entrada de inventario).
- tabla está formada por entradas fechadas de cambios en el inventario (por lo que solo necesito la entrada de fecha
LATEST
por pieza). - todos los datos contenidos en esta tabla única, por lo que no es necesaria ninguna unión.
la actualidad para 1 sola parte, es bastante simple y que puede lograr esto haciendo lo 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
que me pone mi fila superior 1, por lo 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 gustaría trabajar este SQL un poco más para reducir las x # llamadas a la base de datos. (si no es necesario) hasta solo 1 consulta.
Por lo que puedo ver aquí, tengo que hacer un seguimiento de la última fecha por artículo de alguna manera mientras busco mi conjunto de resultados.
Me gustaría hacer una última instancia
WHERE ldPart in ('ABC123', 'BFD21', 'AA123', etc)
para limitar las piezas que necesito. Espero haber aclarado mi pregunta lo suficiente. Avísame si tienes una idea. No puedo hacer un DISTINCT
ya que las filas no son las mismas, la fecha debe ser la última y necesito un máximo de X filas.
¿Pensamientos? Estoy atascado ...