none
juntar datos distintas tablas y orden fechas RRS feed

  • Pregunta

  • Buenas
    Trabajo con sql server express 2019
    Tengo 2 tablas
    En una tabla tengo los trabajadores con las fechas que hacen vacaciones, fiestas......
    Ejemplo
    Trabajador - fecha - motivo
    Juan - 03/01/2020 - vacaciones
    Juan - 04/01/2020 - vacaciones
    Pilar - 03/01/2020 - vacaciones

    En otra tabla tengo las visitas que tienen eses trabajadores
    Cliente - Trabajador - fecha - hora
    Enrique - Juan - 05/01/2020 - 10:00
    Carlos - Juan - 05/01/2020 - 11:00

    Quiero hacer una consulta que si quiero saber que hace en marzo Juan me tendria que salir
    Dia - trabajo - hora
    03/01/2020 vacaciones 00:00
    04/01/2020 vacaciones 00:00
    05/01/2020 Enrique 10:00
    05/01/2020 Juan 11:00

    No se si es posible...
    gracias
    lunes, 9 de marzo de 2020 18:37

Todas las respuestas

  • Hola 

     

    Gracias por levantar tu consulta en los foros de MSDN. Una consulta, de dónde sacas la info del cliente? Igual eso lo alberga la BD? Si puedes dar info más detallada, excelente.

     

    Seguimos buscando una mejor solución a tu consulta

    Gracias por usar los foros de MSDN.

     

    Oscar Navarro

     ____

     

    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.

    lunes, 9 de marzo de 2020 20:21
    Moderador
  • Hola jesteva:

    Siempre es posible, aunque a veces es de mucho trabajo. En el caso del escenario que expones, se puede hacer algo como esto.

    Select Format(t.fecha,'d','es-es') as dia, t.motivo as trabajo, '00:00' as hora
    	from Trabajadores t
    		Where t.trabajador = 'JUAN'
    	union all
    Select Format(v.fecha,'d','es-es'), v.cliente, CAST((CAST(v.hora AS time(0))) AS varchar(5)) 
    	from Visitas v
    		Where v.trabajador = 'JUAN'

    Como puedes observar, puedes aplicar la primera parte de la consulta sobre trabajadores y realizar una union con Visitas. Las columnas tienen que ser del mismo tipo de dato. Como desconozco un poco los tipos de datos que tienen tús tablas, yo he aplicado los que me han parecido por los textos que has pegado.

    Salida

    lunes, 9 de marzo de 2020 20:27
  • declare @trabajador varchar(20) = 'juan', @ano numeric(4) = 2020, @mes numeric(2) = 3;

    ;with consulta as(select  fecha as dia, motivo as trabajo, '00:00'  as hora

    from vacaciones

    where trabajador = @trabajador and  datepart(year,fecha)  = @ano and datepart(month,fecha) = @mes

    union all

    select  fecha as dia, ' visita a: ' + cliente as trabajo,  hora

    from visitas

    where trabajador = @trabajador and  datepart(year,fecha)  = @ano and datepart(month,fecha) = @mes)

    select   dia,trabajo,hora from consulta;


    • Editado Hacerdan lunes, 9 de marzo de 2020 20:51 correccion
    lunes, 9 de marzo de 2020 20:50
  • Buenas

    Me ha ido perfecto.

    Muchas gracias

    lunes, 23 de marzo de 2020 10:07