none
Obtener el registro más reciente de un determinado grupo RRS feed

  • Pregunta

  • Buen dia estaba utilizando la siguiente consulta para obtener los registros más recientes por empleado de la tabla Movimientos

    select
    c.id, c.empleado, c.fecha_movimiento, 
    from(select c.*, 
    row_number() over(partition by c.empleado order by c.fecha_movimiento desc) as rn
    from Movimientos c) c
    where c.rn =1
    

    Pero necesito los datos de otra tabla por lo que utilice el join

    select
    Movimientos.id, Movimientos.empleado, Movimientos.fecha_movimiento, 
    Empleados.nombre
    from Movimientos Movimientos
    join Empleados Empleados
    on Movimientos.empleado= Empleados.id_empleado
    
    Ahora no se me ocurre como hacer la consulta para obtener los registros más recientes por empleado utilizando tambien el join, si pudieran ayudarme por favor

    martes, 26 de mayo de 2020 16:46

Todas las respuestas

  • Hola Emma Grz:

    Una opción es el operador apply

    select Movimientos.id
    	 , Movimientos.empleado
    	 , Movimientos.fecha_movimiento
    	 , Empleados.nombre
    	 , ULTIMO.FECHA_MOVIMIENTO
    	   from Movimientos AS Movimientos
    				 join Empleados AS Empleados on Movimientos.empleado = Empleados.id_empleado
    				 CROSS APPLY (
    							   SELECT TOP (1) C.FECHA_MOVIMIENTO
    									  FROM MOVIMIENTOS AS C
    									  WHERE C.EMPLEADO = MOVIMIENTOS.EMPLEADO
    									  ORDER BY C.FECHA_MOVIMIENTO DESC
    							 ) AS ULTIMO;

    La gracia del mismo está en que, en el conjunto interior (ULTIMO), se iguala c.empleado, con el conjunto exterior movimientos.empleado. En vez de utilizar row_number, puedes utilizar top.

    • Propuesto como respuesta EricRR martes, 26 de mayo de 2020 21:12
    martes, 26 de mayo de 2020 18:45
  • Disculpa compañero probe tu consulta y lo que hace es listarme por empleado los más recientes pero aun asi me trae todos los registros, y necesito que solo me muestre  los registros más recientes por empleado, es decir, 1 por empleado
    martes, 2 de junio de 2020 22:30
  • Hola Emma Grz:

    Puedes aplicar esta otra forma

    select Movimientos.id
    	 , Movimientos.empleado
    	 , Empleados.nombre
    	 , fecha_movimiento
    	   from Movimientos AS Movimientos
    				 join Empleados AS Empleados on Movimientos.empleado = Empleados.id_empleado
    	   where fecha_movimiento = (
    								  select top (1) fecha_movimiento
    										 from movimientos AS m
    												   inner join empleados AS e on m.empleado = e.id_empleado
    										 where e.id_empleado = empleados.id_empleado
    										 order by fecha_movimiento desc
    								);

    miércoles, 3 de junio de 2020 4:31
  • Me aparece el siguiente error Ambiguous column name fecha_movimiento
    miércoles, 3 de junio de 2020 22:15
  • Sólo hay que poner el alias por delante.

    select Movimientos.id
    	 , Movimientos.empleado
    	 , Movimientos.fecha_movimiento
    	 , Empleados.nombre
    	  from Movimientos AS Movimientos
    				 join Empleados AS Empleados on Movimientos.empleado = Empleados.id_empleado
    	   where Movimientos.fecha_movimiento = (
    								  select top (1) M.fecha_movimiento
    										 from movimientos AS m
    												   inner join empleados AS e on m.empleado = e.id_empleado
    										 where e.id_empleado = empleados.id_empleado
    										 order by m.fecha_movimiento desc
    								);

    • Propuesto como respuesta EricRR miércoles, 10 de junio de 2020 17:15
    jueves, 4 de junio de 2020 3:34
  • Hola Emma, 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

    Espero su respuesta.  

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN.  

    Eric Ruiz

    ____________________________  

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    miércoles, 10 de junio de 2020 17:15