SQL - Ayuda con consulta para selección de últimos registros

 
Vista:
sin imagen de perfil

Ayuda con consulta para selección de últimos registros

Publicado por ali (2 intervenciones) el 17/11/2016 16:56:19
Hola que tal, bueno les escribo por que tengo un problema con el cual ojala puedan ayudarme:


Tengo una tabla en donde almaceno datos de los lotes de mis artículos y las fechas de caducidad de cada lote, y tengo la necesidad de obtener de cada articulo únicamente el lote que tenga la fecha de caducidad mas lejana por lo cual realicé la siguiente consulta:


SELECT ARTICULO, CLAVELOTE, MAX(FCADUCIDAD)

FROM LOTES

GROUP BY ARTICULO, CLAVELOTE


Sin embargo la consulta me devuelve artículos repetidos con sus diferentes lotes lo cual es incorrecto, ya que solo me interesa conocer el lote de cada articulo que tenga la fecha de caducidad mas lejana, de antemano les agradezco su apoyo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda con consulta para selección de últimos registros

Publicado por leonardo_josue (1173 intervenciones) el 17/11/2016 20:24:54
Hola Ali...

Este es un problema bastante típico. El detalle está en que quieres hacerlo todo en una sola consulta y tienes que pensarlo por partes.

En primer lugar, debes obtener la fecha Máxima de Caducidad de cada Artículo, independientemente del Lote... por lo tanto, modificas un poco tu consulta y obtienes esto:

1
2
3
4
5
6
7
8
SELECT
   ARTICULO,
   CLAVELOTE,
   MAX(FCADUCIDAD) MAX_FECHA
FROM
   LOTES
GROUP BY
   ARTICULO

Ahora, lo único que tienes que hacer es utilizar esta consulta para filtrar los LOTES, y recuperar sólo el que tenga la fecha Máxima para el artículo seleccionado, es decir, algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
   ARTICULO,
   CLAVELOTE,
   FCADUCIDAD
FROM
   LOTES
INNER JOIN
(   SELECT
       ARTICULO,
       MAX(FCADUCIDAD) MAX_FECHA
    FROM
       LOTES
    GROUP BY
       ARTICULO
) T ON T.ARTICULO = LOTES.ARTICULO
       AND T.MAX_FECHA = LOTES.FCADUCIDAD

Haz la prueba y nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda con consulta para selección de últimos registros

Publicado por ali (2 intervenciones) el 18/11/2016 15:37:42
Perfecto con esto logre lo que necesitaba, te agradezco mucho y espero pronto poder colaborar con una respuesta para este foro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar