INNER JOIN sobre una misma tabla Problema
A,B,C , D, E
2,1,'2011-02-01','2011-01-01', 8
2,1,'2011-02-01','2011-01-02', 7
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 3
2,1,'2011-02-01','2011-01-04', 3
Tengo el problema con esta consulta:
SELECT a.A, a.B, a.C, a.D, a.E
FROM TABLE_A a
INNER JOIN
(SELECT b.A, b.B, b.C, max(b.D) AS max_date
FROM TABLE_A b
GROUP BY b.A, b.B, b.C
) AS b
ON a.A = b.A
AND a.B = b.B
AND a.C = b.C
AND a.D = b.D
Esto me da como resultado:
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 3
2,1,'2011-02-01','2011-01-04', 3
La consulta trae bien los datos, pero necesito filtrarlo por un dato más... El de la columna E que no siempre es correcto en el sentido que el máximo de esa columna no siempre es correspondiente con la fecha que seria lo correcto..
O sea necesito de los resultados que me genera este query (ya filtrados por la fecha D) filtrarlo por el máximo de E.
Del ejemplo de la tabla del principio el resultado correcto seria:
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 6
Si agrego un max(E) as maxE en el INNER JOIN y luego filtro en ON con a.E = b.maxE pierdo resultados... Ya que necesito el maximo del resultado del join :(
Se me acabaron las ideas... ¿alguna ayuda?
2,1,'2011-02-01','2011-01-01', 8
2,1,'2011-02-01','2011-01-02', 7
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 3
2,1,'2011-02-01','2011-01-04', 3
Tengo el problema con esta consulta:
SELECT a.A, a.B, a.C, a.D, a.E
FROM TABLE_A a
INNER JOIN
(SELECT b.A, b.B, b.C, max(b.D) AS max_date
FROM TABLE_A b
GROUP BY b.A, b.B, b.C
) AS b
ON a.A = b.A
AND a.B = b.B
AND a.C = b.C
AND a.D = b.D
Esto me da como resultado:
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 3
2,1,'2011-02-01','2011-01-04', 3
La consulta trae bien los datos, pero necesito filtrarlo por un dato más... El de la columna E que no siempre es correcto en el sentido que el máximo de esa columna no siempre es correspondiente con la fecha que seria lo correcto..
O sea necesito de los resultados que me genera este query (ya filtrados por la fecha D) filtrarlo por el máximo de E.
Del ejemplo de la tabla del principio el resultado correcto seria:
2,1,'2011-02-01','2011-01-04', 6
2,1,'2011-02-01','2011-01-04', 6
Si agrego un max(E) as maxE en el INNER JOIN y luego filtro en ON con a.E = b.maxE pierdo resultados... Ya que necesito el maximo del resultado del join :(
Se me acabaron las ideas... ¿alguna ayuda?
1 respuesta
Respuesta de Cyrus ...
1