Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/08/2012, 12:42
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: obtener solo la ultima fecha de compra

Hola carnero:

Vayamos por partes. Esta consulta:

Cita:
(SELECT codaux , max(Fecha) AS [ÚFecha]
FROM IW_GSAEN
WHERE iw_gsaen.tipo = 'F' *AND iw_gsaen.Estado = 'V'
ORDER BY fecha
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.