Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/08/2012, 10:21
carnero
 
Fecha de Ingreso: noviembre-2009
Mensajes: 315
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: obtener solo la ultima fecha de compra

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola carnero:

Vayamos por partes. Esta consulta:



Tiene un error, en primer lugar porque falta el paréntesis que cierra la consulta (que igual y pudo ser un error de copiar-pegar) pero sobre todo el error está en que no utilizas la función GROUP BY... si quieres obtener la última fecha para cada categoría tendrías que hacer algo como esto:

Código:
SELECT codaux , max(Fecha) AS [ÚFecha]
FROM IW_GSAEN
WHERE iw_gsaen.tipo = 'F' AND iw_gsaen.Estado = 'V' 
GROUP BY codaux
ORDER BY fecha
La consulta que pones es muy compleja como para entenderla sin una buena explicación. Aunque creo que tratar de explicar la consulta puede no resultar sencillo, así es que por lo menos trataré de explicarte algunas formas básicas para resolver el problema básico de obtener el último registro para cada grupo.

En realidad hay varias formas para resolver esta consulta, las más socorridas serían con una subconsulta o con INNER JOIN... pero veamos como sería más o menos y tratas de adecuarlo a lo que tienes. Supongamos que tienes una tabla con la siguiente información:

Código:
Id	|descripcion	|fecha		|cantidad
--------|---------------|---------------|----------
1	|uno		|21/08/2012	|10
2	|uno		|19/08/2012	|5
3	|uno		|20/08/2012	|11
4	|dos		|14/08/2012	|9
5	|dos		|19/08/2012	|4
6	|dos		|13/08/2012	|7
7	|tres		|21/12/2011	|4
8	|tres		|17/05/2012	|8
9	|tres		|13/08/2012	|12
En Access podrías hacer el último registro para cada descripción utilizando un JOIN:

Código:
SELECT T1.* FROM tabla T1 
INNER JOIN
(SELECT descripcion, max(fecha) as max_fecha 
FROM tabla GROUP BY descripcion) T2
ON T1.descripcion = T2.descripcion AND T1.fecha = T2.max_fecha
o utilizando una Subconsulta:

Código:
SELECT T1.*
FROM Tabla T1 
WHERE 
T1.fecha = (SELECT MAX(fecha)  FROM Tabla T2 
                 WHERE T1.descripcion = T2.descripcion)

Para ambos casos el resultado de la consulta sería

Código:
Id	|descripcion	|fecha		|cantidad
---------------------------------------------------
3	|uno		|21/08/2012	|10
7	|dos		|19/08/2012	|4
11	|tres		|13/08/2012	|12
Trata de implementar algo parecido en tu consulta, y ojalá puedas obtener el resultado esperado.

Saludos.
Leo.
Hola
muchas gracias por el interes, porfin alguien se intereso!

mira probe con esta consulta (antes ya habia hecho algo parecido)

Cita:
SELECT codaux , max(Fecha) AS [ÚFecha]
FROM IW_GSAEN
WHERE iw_gsaen.tipo = 'F' AND iw_gsaen.Estado = 'V'
GROUP BY codaux
ORDER BY fecha
y me entrega este error.



que significa??


otra cosa cuando la fecha es nula no la muestra, el problama es que
hay una tabla de clientes que pueden haber comprado o no en un rango de fecha, por lo tanto con esa consulta quedan fuera los que no compraron, ¿como los incluyo a la consulta?



muchas gracias denuevo

Última edición por carnero; 22/08/2012 a las 10:48