• Lunes 18 de Noviembre de 2024, 00:37

Autor Tema:  problema para resolver una consulta  (Leído 2301 veces)

darksoul6306

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
problema para resolver una consulta
« en: Viernes 5 de Octubre de 2012, 06:58 »
0
 :ayuda:
Que tal a todos.
soy nuevo en el foro y tengo algunas dudas para generar una consulta en sql server 2008. la situacion es la siguiente.
Tengo una tabla con entos campos.

no_id   int  -----------> numero de  identificador, en este campo se repiten los valores porque es una tabla relacion
fecha_e  datetime -------->contiene una fecha y hora de entrada
fecha_s  datetime--------->contiene una fecha y hora de salida

Se llena masomenos asi:

no_idfecha_efecha_s
124-09-2012 00:00:0024-09-2012 03:00:00
224-09-2012 00:00:0024-09-2012 03:00:00
125-09-2012 00:00:0025-09-2012 03:00:00
225-09-2012 00:00:0025-09-2012 03:00:00
325-09-2012 00:00:0025-09-2012 03:00:00
226-09-2012 00:00:0026-09-2012 03:00:00

lo que necesito es hacer una consulta que me seleccione todos lo id por semana y que me ponga la diferiencia de horas de los campos de entrada y salida por dia para despues mostrarla en un gridwiew

num iddomingolunesmartesmiercolesjuevesviernessabado
10330000
20333000
30030000

Ojala y pudieran ayudarme a generar esta consulta, les agradeceria mucho   :yes:

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re:problema para resolver una consulta
« Respuesta #1 en: Viernes 5 de Octubre de 2012, 16:04 »
0
Te recomiendo leas esto:

http://msdn.microsoft.com/en-us/library/ms186724.aspx

Ahí encontrarás tú solución, lee muy bien la parte de DATENAME ( http://msdn.microsoft.com/en-us/library/ms174395.aspx )
Y también el DATEDIFF ( http://msdn.microsoft.com/en-us/library/ms189794.aspx )

Con esas 2 funciones puedes armar una sentencia, ahora también debes considerar que si quieres que aparezcan todos los días de la semana deberás recorrer 7 veces la misma tabla (LEFT o INNER JOIN), ya que si en tus datos que tengas en tú tabla NO aparece algún día de la semana, entonces NO pondrá alguna columna, y tampoco lo recomiendo ya que recorrer  7 veces tú tabla puede ocasionar que tú sentencia sea tardada si es que analizará mucha información.

Otra solución es que sólo recorras una vez tú tabla.. obtengas la información que necesitas.. y en un Formulario (en algún lenguaje de programación) ordenes dichos datos..

Ahora bien una solución que si considero óptima, es que uses tablas cruzadas (cross tables)  http://es.wikipedia.org/wiki/Tabulaci%C3%B3n_cruzada , http://www.elguille.info/colabora/NET2006/mpadierna_ReferenciasCruzadas.htm

Bueno.. no digo que sea la mejor solución, sólo es una simple opinión saludos! :)
@gabio87

darksoul6306

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:problema para resolver una consulta
« Respuesta #2 en: Sábado 6 de Octubre de 2012, 01:06 »
0
Es justamente lo que necesitaba, lo pude resolver con las consultas cruzadas, fue una excelente opción.
me ahorraste mucho tiempo de busqueda y estres,  Te agradesco mucho  :gracias: