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!