Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2015, 13:17
Facto
 
Fecha de Ingreso: febrero-2015
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 1
Demasiado pedir para SQL?

Hola a todos,

quería pediros vuestra opinión sobre si la siguiente operación se puede hacer en sql con una sentencia sql sobre una única tabla, o directamente necesito programación:

1.- Partimos de esta tabla

Num Start End State Duration
1545782 02.20.2015 06:00 02.20.2015 06:02 2 3
1545782 02.20.2015 07:11 02.20.2015 07:13 2 1
1545782 02.20.2015 07:13 02.20.2015 07:15 2 2
1545782 02.20.2015 07:23 02.20.2015 07:27 20 4
1545782 02.20.2015 07:28 02.20.2015 07:41 20 12
1545782 02.20.2015 08:27 02.20.2015 08:36 20 10
1545782 02.20.2015 08:48 02.20.2015 08:59 20 11
1546788 02.20.2015 21:33 02.20.2015 21:34 2 1
1546788 02.20.2015 21:34 02.20.2015 21:34 2 20
1545788 02.19.2015 18:51 02.19.2015 18:57 20 6
1547912 02.19.2015 19:35 02.19.2015 19:38 2 4
1547912 02.19.2015 19:38 02.19.2015 19:41 2 10

2.- Debemos llegar a obtener esta otra tabla:

Num Start End State Duration
1545782 02.20.2015 06:00 02.20.2015 07:15 2 6
1545782 02.20.2015 07:23 02.20.2015 07:27 20 4
1545782 02.20.2015 07:28 02.20.2015 07:41 20 12
1545782 02.20.2015 08:27 02.20.2015 08:36 20 10
1545782 02.20.2015 08:48 02.20.2015 08:59 20 11
1546788 02.20.2015 21:33 02.20.2015 21:34 2 21
1545788 02.19.2015 18:51 02.19.2015 18:57 20 6
1547912 02.19.2015 19:35 02.19.2015 19:41 2 14


3.- Esto se consigue aplicando las siguientes reglas:

Si las filas tienen igual Num y State = 2……………….muestras 1 fila con Num, Start (el más pequeño), End (el más grande), State, SUM(Duration de todos ellos).

Si las filas tienen igual Num y State = 20…………….muestras todas las filas con Num, Start, End, State, Duration.


Problema:
El Group by con condiciones se me escapa, combinar con HAVING y una Select anidada tampoco me ha dado resultados, se os ocurre algo?

Gracias de antemano!