Imprimir página | Cerrar ventana

Having con MAX(TIMESTAMP)

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y Otros sistemas
Descripción del foro: Proyectos ADP & Sql Server, Mysql& Access, MSDE
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84019
Fecha de impresión: 17/Julio/2019 a las 21:35


Tema: Having con MAX(TIMESTAMP)
Publicado por: Gonzalo22
Asunto: Having con MAX(TIMESTAMP)
Fecha de publicación: 17/Octubre/2018 a las 11:21
Muy buenas compañeros os comparto un caso que me está dando dolores de cabeza para tratar de encontrar ayuda:

Datos

Nombre Cantidad fecha
x 4 2018-05-04 
x 3 2018-05-04
x 2 2018-03-09
y 7 2017-12-14
z 8 2018-04-03
z 1 2018-04-03

Me gustaria crear una consulta por nombre, con la última fecha(Max) y con la suma de la cantida para esa última fecha

Resultado sería:

Nombre Cantidad fecha
x 7 2018-05-04 
y 7 2017-12-14
z 9 2018-04-03

El campo fecha es de tipo TIMESTAMP:.

muchas gracias y un saludo



Respuestas:
Publicado por: emiliove
Fecha de publicación: 17/Octubre/2018 a las 16:01
hola Gonzalo

Lo que yo haría es hacer una cuenta por nombres y por fecha, en una consulta de totales, la cual me sume Cantidad y solo me muestre en criterio = 1 del campo cuenta, algo como:

SELECT Sum(Cantidad) AS SumaDeCantidad, fecha, Nombre, DCount("*","Datos","Nombre='" & [Nombre] & "'and fecha>" & CDbl([fecha]))+1 AS Cuenta

FROM Datos

GROUP BY fecha, Nombre, DCount("*","Datos","Nombre='" & [Nombre] & "'and fecha>" & CDbl([fecha]))+1

HAVING (((DCount("*","Datos","Nombre='" & [Nombre] & "'and fecha>" & CDbl([fecha]))+1)=1))

ORDER BY fecha DESC;


Suponiendo que tu tabla se llama Datos, y claro esto en access, si hablas de SQL Server te equivocaste y hay que poner el hilo en el foro adecuado, nos indicas para moverlo.


Saludos.




Publicado por: Gonzalo22
Fecha de publicación: 17/Octubre/2018 a las 17:08
Muchas gracias por tu respuesta. Sí, estaba buscando algo más orientado a SQL.

Ahora intento buscar el fordo adecuado, o agradecería si lo puede mover tu mismo.

Un saludo y gracias


Publicado por: pitxiku
Fecha de publicación: 17/Octubre/2018 a las 18:17
Si entiendo lo que quieres hacer, otra posibilidad con 2 consultas:

- Consulta 1: agrupar por nombre y devolver la máxima fecha.
- Consulta 2: usar la consulta 1 y la tabla, relacionándolas por nombre y fecha. Luego agrupas por nombre y fecha, y sumas las cantidades.


Publicado por: Gonzalo22
Fecha de publicación: 18/Octubre/2018 a las 09:34
Muchas gracias por la sugerencia. Pensaba que existiria alguna clausula WHERE,HAVING o OVER que me permita hacerlo desde la consulta inicial


Publicado por: pitxiku
Fecha de publicación: 19/Octubre/2018 a las 19:43
Como hablas de TIMESTAMP, entiendo que no es Access 100%. Si es así, puedes preguntar en un foro del gestor de datos que estás usando, a ver si te dan alguna otra solución.



Imprimir página | Cerrar ventana