Ver Mensaje Individual
  #16 (permalink)  
Antiguo 23/12/2013, 10:52
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: Consulta de SQL y campos fecha

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. eventid INT,
  4. site_id INT,
  5. identity_id INT,
  6. parity INT,
  7. event_type INT,
  8. eventdate datetime
  9. )
  10.  
  11. INSERT INTO #temp VALUES (383325,   20  ,17045, NULL    ,270,'2012-06-05 00:00:00.000')
  12. INSERT INTO #temp VALUES (383327,   20  ,17045, NULL    ,270,'2012-06-05 00:00:00.000')
  13. INSERT INTO #temp VALUES (383329,   20  ,17045, NULL    ,270,'2012-06-06 00:00:00.000')
  14. INSERT INTO #temp VALUES (383338,   20  ,17045, NULL    ,270,'2012-10-26 00:00:00.000')
  15. INSERT INTO #temp VALUES (383339,   20  ,17045, NULL    ,270,'2012-10-26 00:00:00.000')
  16. INSERT INTO #temp VALUES (383341,   20  ,17045, NULL    ,270,'2012-10-27 00:00:00.000')
  17. INSERT INTO #temp VALUES (383343,   20  ,17050, NULL    ,270,'2012-04-29 00:00:00.000')
  18. INSERT INTO #temp VALUES (383345,   20  ,17050, NULL    ,270,'2012-04-29 00:00:00.000')
  19. INSERT INTO #temp VALUES (383346,   20  ,17050,NULL ,270,'2012-04-30 00:00:00.000')
  20. INSERT INTO #temp VALUES (383354,   20  ,17053, NULL    ,270,'2012-05-02 00:00:00.000')
  21. INSERT INTO #temp VALUES (383356,   20  ,17053, NULL    ,270,'2012-05-02 00:00:00.000')
  22. INSERT INTO #temp VALUES (383358,   20  ,17053, NULL    ,270,'2012-05-03 00:00:00.000')
  23. INSERT INTO #temp VALUES (383365,   20  ,17053, NULL    ,270,'2012-09-22 00:00:00.000')
  24. INSERT INTO #temp VALUES (383367,   20  ,17053, NULL    ,270,'2012-09-22 00:00:00.000')
  25. INSERT INTO #temp VALUES (383369,   20  ,17053, NULL    ,270,'2012-09-23 00:00:00.000')
  26. INSERT INTO #temp VALUES (383373,   20  ,17060, NULL    ,270,'2012-05-01 00:00:00.000')
  27. INSERT INTO #temp VALUES (383374,   20  ,17060, NULL    ,270,'2012-05-01 00:00:00.000')
  28. INSERT INTO #temp VALUES (383376,   20  ,17060, NULL    ,270,'2012-05-02 00:00:00.000')
  29. INSERT INTO #temp VALUES (383382,   20  ,17060, NULL    ,270,'2012-09-23 00:00:00.000')
  30. INSERT INTO #temp VALUES (383384,   20  ,17060, NULL    ,270,'2012-09-23 00:00:00.000')
  31. INSERT INTO #temp VALUES (383385,   20  ,17060, NULL    ,270,'2012-09-24 00:00:00.000')
  32. INSERT INTO #temp VALUES (383387,   20  ,17060, NULL    ,270,'2012-10-13 00:00:00.000')
  33. INSERT INTO #temp VALUES (383388,   20  ,17060, NULL    ,270,'2012-10-13 00:00:00.000')
  34. INSERT INTO #temp VALUES (383390,   20  ,17060, NULL    ,270,'2012-10-14 00:00:00.000')
  35. INSERT INTO #temp VALUES (383394,   20  ,17066, NULL    ,270,'2012-05-10 00:00:00.000')
  36. INSERT INTO #temp VALUES (383396,   20  ,17066, NULL    ,270,'2012-05-10 00:00:00.000')
  37. INSERT INTO #temp VALUES (383397,   20  ,17066, NULL    ,270,'2012-05-11 00:00:00.000')
  38. INSERT INTO #temp VALUES (383404,   20, 17066,  NULL    ,270,'2012-10-02 00:00:00.000')
  39. INSERT INTO #temp VALUES (383405,   20, 17066,  NULL    ,270,'2012-10-02 00:00:00.000')
  40.  
  41.  
  42. CREATE TABLE #resultado
  43. (
  44. comentario VARCHAR(20),
  45. identity_id INT,
  46. fecha datetime
  47. )
  48.  
  49. SELECT DISTINCT identity_id,IDENTITY(INT,1,1) AS rn INTO #temp2 FROM #temp
  50. DECLARE @x INT
  51. DECLARE @y INT
  52. DECLARE @minimo datetime
  53. DECLARE @IDENTITY INT
  54. DECLARE @dias INT
  55. DECLARE @contador INT
  56. DECLARE @contador1 INT
  57. SET @x=1
  58. SET @contador=1
  59. while @x<=(SELECT COUNT(*) FROM #temp2)
  60. BEGIN
  61. SELECT @IDENTITY=identity_id FROM #temp2 WHERE rn=@x
  62. SELECT *,IDENTITY(INT,1,1) AS rn INTO #temp3 FROM #temp WHERE identity_id=@IDENTITY
  63.     SET @y=1
  64.     SET @contador=1
  65.     SET @contador1=1
  66.     SELECT @minimo=MIN(eventdate) FROM #temp3
  67.     INSERT INTO #resultado
  68.     SELECT CONVERT(VARCHAR(20),@contador) + ' Evento', identity_id,NULL FROM #temp2 WHERE rn=@x    
  69.     while @y<=(SELECT COUNT(*) FROM #temp3)
  70.     BEGIN
  71.      SELECT @dias=datediff(dd,@minimo,eventdate) FROM #temp3 WHERE rn=@y
  72.      IF @dias>6
  73.        BEGIN   
  74.          SET @contador=@contador+1
  75.          SET @contador1=1
  76.          INSERT INTO #resultado
  77.          SELECT CONVERT(VARCHAR(20),@contador) + ' Evento', identity_id,NULL FROM #temp3 WHERE rn=@y
  78.          SELECT @minimo=MIN(eventdate) FROM #temp3 WHERE rn=@y
  79.          INSERT INTO #resultado
  80.          SELECT CONVERT(VARCHAR(20),@contador1) + ' monta', identity_id,eventdate FROM #temp3 WHERE rn=@y  
  81.          SET @contador1=@contador1+1
  82.        END
  83.      ELSE
  84.         BEGIN
  85.           INSERT INTO #resultado
  86.           SELECT CONVERT(VARCHAR(20),@contador1) + ' monta', identity_id,eventdate FROM #temp3 WHERE rn=@y  
  87.           SET @contador1=@contador1+1
  88.         END
  89.      SET @y=@y+1
  90.     END
  91. DROP TABLE #temp3
  92. SET @x=@x+1
  93. END
  94.  
  95. SELECT * FROM #resultado
  96.  
  97. DROP TABLE #temp2
  98. DELETE FROM #resultado

el resutado es:

comentario identity_id fecha
-------------------- ----------- -----------------------
1 Evento 17045 NULL
1 monta 17045 2012-06-05 00:00:00.000
2 monta 17045 2012-06-05 00:00:00.000
3 monta 17045 2012-06-06 00:00:00.000
2 Evento 17045 NULL
1 monta 17045 2012-10-26 00:00:00.000
2 monta 17045 2012-10-26 00:00:00.000
3 monta 17045 2012-10-27 00:00:00.000
1 Evento 17050 NULL
1 monta 17050 2012-04-29 00:00:00.000
2 monta 17050 2012-04-29 00:00:00.000
3 monta 17050 2012-04-30 00:00:00.000
1 Evento 17053 NULL
1 monta 17053 2012-05-02 00:00:00.000
2 monta 17053 2012-05-02 00:00:00.000
3 monta 17053 2012-05-03 00:00:00.000
2 Evento 17053 NULL
1 monta 17053 2012-09-22 00:00:00.000
2 monta 17053 2012-09-22 00:00:00.000
3 monta 17053 2012-09-23 00:00:00.000
1 Evento 17060 NULL
1 monta 17060 2012-05-01 00:00:00.000
2 monta 17060 2012-05-01 00:00:00.000
3 monta 17060 2012-05-02 00:00:00.000
2 Evento 17060 NULL
1 monta 17060 2012-09-23 00:00:00.000
2 monta 17060 2012-09-23 00:00:00.000
3 monta 17060 2012-09-24 00:00:00.000
3 Evento 17060 NULL
1 monta 17060 2012-10-13 00:00:00.000
2 monta 17060 2012-10-13 00:00:00.000
3 monta 17060 2012-10-14 00:00:00.000
1 Evento 17066 NULL
1 monta 17066 2012-05-10 00:00:00.000
2 monta 17066 2012-05-10 00:00:00.000
3 monta 17066 2012-05-11 00:00:00.000
2 Evento 17066 NULL
1 monta 17066 2012-10-02 00:00:00.000
2 monta 17066 2012-10-02 00:00:00.000


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