Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Consulta resgistro más reciente por fecha y hora

Estas en el tema de Consulta resgistro más reciente por fecha y hora en el foro de SQL Server en Foros del Web. Hola, Tengo una tabla con los campos Cliente, Compra, Fecha y Hora que guarda las compras que un cliente hace y necestiso hacer una consulta ...
  #1 (permalink)  
Antiguo 16/08/2012, 09:07
 
Fecha de Ingreso: abril-2007
Mensajes: 51
Antigüedad: 17 años
Puntos: 1
Consulta resgistro más reciente por fecha y hora

Hola,

Tengo una tabla con los campos Cliente, Compra, Fecha y Hora que guarda las compras que un cliente hace y necestiso hacer una consulta donde se recuperen los registros con mayor fecha y hora de cada usuario.

Por ejemplo. Si la situación de la tabla es,

Cliente___Compra___Fecha_________Hora
=====================================
Juan______12B______2012-08-16____16:30:00
María_____13A______2012-08-15____20:30:00
Juan______23C______2012-08-16____16:35:00
Julián_____13C______2012-08-14____10:20:00
Juan______22A______2012-08-13____18:40:00
María_____23I______2012-08-16____16:30:00
José______34F______2012-08-16____16:30:00

Tendría que devolver,

Cliente___Compra___Fecha_________Hora
=====================================
Juan______23C______2012-08-16____16:35:00
María_____23I______2012-08-16____16:30:00
José______34F______2012-08-16____16:30:00
Julián_____13C______2012-08-14____10:20:00

Por ahora consigo que devuelva la compra que ha hecho cada usuario el último día, pero si ese día ha hecho varias, no consigo que devuelva la última. La consulta que tengo es,

SELECT Cliente, Compra, MAX(Fecha), Hora
FROM t_compras
GROUP BY Cliente
ORDER BY Fecha DESC, Hora DESC

Si hago,

SELECT Cliente, Compra, MAX(Fecha), MAX(Hora)
FROM t_compras
GROUP BY Cliente
ORDER BY Fecha DESC, Hora DESC

Se obitne,

Cliente___Compra___Fecha_________Hora
=====================================
Juan______12B______2012-08-16____16:35:00
María_____23I______2012-08-16____16:30:00
José______34F______2012-08-16____16:30:00
Julián_____13C______2012-08-14____10:20:00

Fijaos que devuleve la última fecha y hora, pero la compra no es la que corresponde con esa hora, sino con otra de ese día.

¿Hay alguna forma de obtener los registros con la fecha y la hora más recientes?

Mucha gracias por la ayuda!!
  #2 (permalink)  
Antiguo 16/08/2012, 09:39
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Consulta resgistro más reciente por fecha y hora

¿Que motor de base de datos estas ocupando?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 16/08/2012, 09:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta resgistro más reciente por fecha y hora

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. cliente VARCHAR(20),
  4. compra VARCHAR(20),
  5. fecha VARCHAR(20),
  6. hora VARCHAR(20)
  7. )
  8.  
  9.  
  10. INSERT INTO #temp VALUES ('juan','12B','2012-08-16','16:30:00')
  11. INSERT INTO #temp VALUES ('María','13A','2012-08-15','20:30:00')
  12. INSERT INTO #temp VALUES ('Juan','23C','2012-08-16','16:35:00')
  13. INSERT INTO #temp VALUES ('Julián','13C','2012-08-14','10:20:00')
  14. INSERT INTO #temp VALUES ('Juan','22A','2012-08-13','18:40:00')
  15. INSERT INTO #temp VALUES ('María','23I','2012-08-16','16:30:00')
  16. INSERT INTO #temp VALUES ('José','34F','2012-08-16','16:30:00')
  17.  
  18. SELECT * FROM #temp WHERE compra IN
  19. (
  20. SELECT compra FROM(
  21. SELECT MAX(columna) AS columna1, cliente,MAX(compra) AS compra FROM(
  22. SELECT CONVERT(datetime, fecha + ' ' + hora) AS columna, compra,cliente FROM #temp
  23. ) t1 GROUP BY cliente
  24. ) t2
  25. )

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 19/08/2012, 11:24
 
Fecha de Ingreso: abril-2007
Mensajes: 51
Antigüedad: 17 años
Puntos: 1
Respuesta: Consulta resgistro más reciente por fecha y hora

Hola,

Al final lo que voy a hacer es cambiar los campos DATE y TIME por uno DATETIME. Creo que simplificará la consulta.

Muchas gracias por la ayuda!! :D
  #5 (permalink)  
Antiguo 19/08/2012, 14:08
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta resgistro más reciente por fecha y hora

Libras- me parece que Max(Compra) no es correcto.
Yo haria lo siguiente:
Código SQL:
Ver original
  1. SELECT  *
  2. FROM    (SELECT ROW_NUMBER() OVER(Partition BY Cliente ORDER BY Fecha DESC, Hora DESC) N,
  3.                 *
  4.         FROM    #temp) T
  5. WHERE   N=1;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog

Etiquetas: fecha, select, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:44.