Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/02/2014, 09:32
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: relacionar 2 tablas tomando en cuenta rangos de hora

tomando en cuenta los datos que posteaste, quedaria algo asi :)

Código SQL:
Ver original
  1. CREATE TABLE #llamadas_totales
  2. (
  3. inicio datetime,
  4. fin datetime,
  5. anexo INT,
  6. numero VARCHAR(20)
  7. )
  8.  
  9.  
  10. INSERT INTO #llamadas_totales VALUES ('2014-01-31 11:26:17.663','2014-01-31 11:26:29.847',11097,'11092')
  11. INSERT INTO #llamadas_totales VALUES ('2014-01-31 11:11:58.903','2014-01-31 11:14:50.553',11097, '11019')
  12. INSERT INTO #llamadas_totales VALUES ('2014-01-31 10:59:01.823','2014-01-31 11:00:34.483',11097, '25998')
  13. INSERT INTO #llamadas_totales VALUES ('2014-01-30 16:28:47.083','2014-01-30 16:28:49.407',11097, '9989140938')
  14. INSERT INTO #llamadas_totales VALUES ('2014-01-30 16:19:11.613','2014-01-30 16:19:17.260',11097, '9989140938')
  15. INSERT INTO #llamadas_totales VALUES ('2014-01-30 16:16:42.070','2014-01-30 16:16:45.563',11097 ,'11091')
  16. INSERT INTO #llamadas_totales VALUES ('2014-01-30 14:52:54.073','2014-01-30 14:54:20.437',11097, '2083')
  17. INSERT INTO #llamadas_totales VALUES ('2014-01-30 00:15:41.147','2014-01-30 00:18:14.427',11097, '989140938')
  18. INSERT INTO #llamadas_totales VALUES ('2014-01-30 00:14:15.060','2014-01-30 00:14:29.230',11097, '9989140938')
  19. INSERT INTO #llamadas_totales VALUES ('2014-01-30 00:12:36.030','2014-01-30 00:13:50.370',11097, '989140938')
  20. INSERT INTO #llamadas_totales VALUES ('2014-01-30 00:11:34.233','2014-01-30 00:11:40.553',11097, '989140938')
  21. INSERT INTO #llamadas_totales VALUES ('2014-01-30 00:02:20.510','2014-01-30 00:11:15.950',11097, '9989140938')
  22.  
  23. CREATE TABLE #conexion
  24. (
  25. agente INT,
  26. anexo INT,
  27. hora_conexion datetime,
  28. hora_desconexion datetime
  29. )
  30.  
  31. INSERT INTO #conexion VALUES (208,11097,'2014-01-29 23:55:08.015','2014-01-30 01:03:33.948')
  32. INSERT INTO #conexion VALUES (208,11097,'2014-01-30 16:18:42.562','2014-01-30 16:28:00.527')
  33. INSERT INTO #conexion VALUES (208,11097,'2014-02-01 16:43:51.727','2014-02-01 16:44:28.262')
  34. INSERT INTO #conexion VALUES (208,11097,'2014-01-30 16:34:11.104','2014-01-30 16:53:21.482')
  35. INSERT INTO #conexion VALUES (208,11097,'2014-01-30 17:07:39.587','2014-01-30 17:36:29.158')
  36.  
  37.  
  38.  
  39.  
  40. SELECT isnull(t3.calculado,'llamada se realizo no conectado al sistema') AS calculado,isnull(t3.inicio,t4.inicio) AS inicio, isnull(t3.fin,t4.fin) AS fin,isnull(t3.anexo,t4.anexo) AS anexo, isnull(t3.numero,t4.numero) AS numero,t3.agente FROM(
  41. SELECT * FROM(
  42. SELECT
  43. CASE
  44. WHEN inicio BETWEEN hora_conexion AND hora_desconexion THEN 'llamada se realizo conectado al sistema' ELSE 'llamada se realizo no conectado al sistema' END AS calculado,inicio,fin,t1.anexo,t1.numero,t2.agente
  45.  FROM #llamadas_totales AS t1
  46. LEFT JOIN #conexion AS t2 ON (t1.anexo=t2.anexo)
  47. ) completa WHERE calculado='llamada se realizo conectado al sistema'
  48. ) AS t3
  49. RIGHT JOIN #llamadas_totales AS t4 ON (t3.inicio=t4.inicio)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me