Sentencia SQL para encontrar un ultimo registro por cliente mediante fecha

publicado por: Anonymous

Estoy intentando crear una sentencia que me devuelva un campo a partir de una fecha, pero bajo cierta condición.

Ante todo tengo una tabla con varios campos, entre los cuales me interesan los de la siguiente imagen:

introducir la descripción de la imagen aquí

Lo que necesito es que me devuelva el ultimo registro introducido por fecha.

Ej: Criterio de búsqueda 2018-02-28 me devuelve el ID CLIENTE 4.

Ej: Criterio de búsqueda 2018-03-04 me devuelve el ID CLIENTE 2.

Ej: Criterio de búsqueda 2018-02-15 no me devuelve nada.

Hasta el momento tengo el siguiente codigo:

SELECT `cliente` FROM `Historial` WHERE `fecha` LIKE '%$busqueda%' GROUP BY `cliente` ORDER BY `fecha` DESC

Donde $busqueda viene a ser la fecha.

Agradecería cualquier ayuda. Muchas gracias.

solución

Podes realizar un max del ID CLIENTE de la siguiente forma:

select 
  max(A.Fecha),A.idcliente
from 
  historial A 
      inner join (SELECT 
                    MAX(id) as id,idcliente 
                FROM 
                    Historial 

                GROUP BY 
                    idcliente ) B on b.idcliente = a.idcliente
group by 
    A.idcliente
having 
  max(A.Fecha)= '2018-02-26'

Recorda que si queres agregar mas campos al select de tu consulta tambien deberas agregarlos al group by como por ejemplo el nombre del cliente.

http://sqlfiddle.com/#!18/884cd/17

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *