Ver Mensaje Individual
  #7 (permalink)  
Antiguo 22/10/2013, 11:46
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

Los datos:
Código SQL:
Ver original
  1. CREATE TABLE #T(id INT,
  2.                 Fecha DateTime,
  3.                 Estado VARCHAR(10));
  4.  
  5. INSERT INTO #T SELECT 1,'01-01-2013 08:00','inicio';
  6. INSERT INTO #T SELECT 1,'01-01-2013 10:00','fin';
  7. INSERT INTO #T SELECT 1,'01-01-2013 13:00','inicio';
  8. INSERT INTO #T SELECT 1,'01-01-2013 13:30','fin';
  9. INSERT INTO #T SELECT 1,'01-01-2013 13:40','fin';
  10. INSERT INTO #T SELECT 1,'01-01-2013 14:00','inicio';
  11. INSERT INTO #T SELECT 1,'01-01-2013 14:30','inicio';
  12. INSERT INTO #T SELECT 1,'01-01-2013 15:40','fin';

La recuperacion:
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 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. SELECT  MIN(Fecha) inicio,
  13.         MAX(Fecha) Fin
  14. FROM    T2
  15. GROUP BY N
  16. ORDER BY N;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog