Ver Mensaje Individual
  #10 (permalink)  
Antiguo 22/10/2013, 12:12
GeriReshef
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta SQL resta de 2 fechas en el mismo campo en distinto registro. (co

De hecho- mi respuesta no es correcta..
Voy a agregar unas filas mas (02-01-2013 14:30 - 02-01-2013 15:40):
Código SQL:
Ver original
  1. INSERT INTO #T SELECT 1,'02-01-2013 14:00','inicio';
  2. INSERT INTO #T SELECT 1,'02-01-2013 14:30','inicio';
  3. INSERT INTO #T SELECT 1,'02-01-2013 14:40','inicio';
  4. INSERT INTO #T SELECT 1,'02-01-2013 14:50','inicio';
  5. INSERT INTO #T SELECT 1,'02-01-2013 15:30','fin';
  6. INSERT INTO #T SELECT 1,'02-01-2013 15:33','fin';
  7. INSERT INTO #T SELECT 1,'02-01-2013 15:35','fin';
  8. INSERT INTO #T SELECT 1,'02-01-2013 15:40','fin';

y la correcta recuperacion es:
Código SQL:
Ver original
  1. WITH T1 AS
  2. (SELECT ROW_NUMBER() OVER(ORDER BY Fecha)-ROW_NUMBER() OVER(Partition BY Estado ORDER BY Fecha) N,
  3.         *
  4. FROM    #T),
  5. T2 AS
  6. (SELECT N, --Case Estado When 'inicio' Then N+1 Else N End N,
  7.         Estado,
  8.         CASE Estado WHEN 'inicio' THEN MIN(Fecha) ELSE MAX(Fecha) END Fecha
  9. FROM    T1
  10. GROUP BY N,
  11.         Estado),
  12. T3 AS
  13. (SELECT ROW_NUMBER() OVER(Partition BY Estado ORDER BY Fecha) N,
  14.         Estado,
  15.         Fecha
  16. FROM    T2 )
  17. SELECT  MIN(Fecha) inicio,
  18.         MAX(Fecha) Fin
  19. FROM    T3
  20. GROUP BY N
  21. ORDER BY N;

Libras- no debes corregir nada, tu codigo es correcto tambien con este caso extremo.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog