Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/12/2008, 13:39
Avatar de a n g e l u s
a n g e l u s
 
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 4 meses
Puntos: 1
De acuerdo Respuesta: Seleccionar los tres ultimos meses de cada registro repetido en UNA tabla

SOLUCIONADO

Como necesito los tres ultimos meses, y no mas puedo llegar a una solucion rapida.

primero cree 3 funciones:

FUNCION MES1
BEGIN

DECLARE V1 INTEGER;
SELECT
rem.id
INTO
V1
FROM
tabla rem
WHERE
rem.id = var_princ AND
ORDER BY
rem.id,
rem.anyo_trab DESC,
rem.mes_trab DESC
LIMIT 1 ;

RETURN V1;
END

esta funcion se repite tres veces y lo unico que hay que cambiar es el LIMIT
MES1 - LIMIT 1
MES2 - LIMIT 1,1 ;
MES3 - LIMIT 2,1 ;


Luego cree un procedimiento almacenado que llama las funciones:

BEGIN

DROP TEMPORARY TABLE IF EXISTS tres_ultimos_meses;
CREATE TEMPORARY TABLE tres_ultimos_meses
SELECT *
FROM tabla rem
WHERE rem.id = var_id AND
rem.id IN(
MES1(var_princ, rem.id_trab_cont),
MES2(var_princ, rem.id_trab_cont),
MES3(var_princ, rem.id_trab_cont)
)
ORDER BY rem.id, rem.ano_trab DESC, rem.mes_trab DESC;

--> LLAMO A LA TABLA TEMPORAL PARA MOSTRARLA O TRABAJAR CON ELLA
select * from tres_ultimos_meses;


END


OJALA LES AYUDE Y SI TIENEN OTRA SOLUCION MEJOR BIENVENIDA.

cualquier duda les ayudo
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post