Transposition de filas y columnas SQLite con promedio por hora

Tengo una tabla en SQLite llamada param_vals_breaches que se parece a lo siguiente:

id param queue date_time param_val breach_count 1 ca 2013-01-01 00:00:00 188 7 2 cb 2013-01-01 00:00:00 156 8 3 cc 2013-01-01 00:00:00 100 2 4 da 2013-01-01 00:00:00 657 0 5 db 2013-01-01 00:00:00 23 6 6 dc 2013-01-01 00:00:00 230 12 7 ca 2013-01-01 01:00:00 100 0 8 cb 2013-01-01 01:00:00 143 9 9 cc 2013-01-01 01:00:00 12 2 10 da 2013-01-01 01:00:00 0 1 11 db 2013-01-01 01:00:00 29 5 12 dc 2013-01-01 01:00:00 22 14 13 ca 2013-01-01 02:00:00 188 7 14 cb 2013-01-01 02:00:00 156 8 15 cc 2013-01-01 02:00:00 100 2 16 da 2013-01-01 02:00:00 657 0 17 db 2013-01-01 02:00:00 23 6 18 dc 2013-01-01 02:00:00 230 12 

Quiero escribir una consulta que me muestre una queue particular (por ejemplo, " a ") con el promedio param_val y breach_count para cada parametro hora por hora. Así que transponiendo los datos para get algo que se ve así:

 Results for Queue A Hour 0 Hour 0 Hour 1 Hour 1 Hour 2 Hour 2 param avg_param_val avg_breach_count avg_param_val avg_breach_count avg_param_val avg_breach_count c xxx xxx xxx xxx xxx xxx d xxx xxx xxx xxx xxx xxx 

¿es posible? No estoy seguro de cómo hacerlo. ¡Gracias!

SQLite no tiene una function PIVOT pero puede usar una function agregada con una expresión CASE para convertir las filas en columnas:

 select param, avg(case when time = '00' then param_val end) AvgHour0Val, avg(case when time = '00' then breach_count end) AvgHour0Count, avg(case when time = '01' then param_val end) AvgHour1Val, avg(case when time = '01' then breach_count end) AvgHour1Count, avg(case when time = '02' then param_val end) AvgHour2Val, avg(case when time = '02' then breach_count end) AvgHour2Count from ( select param, strftime('%H', date_time) time, param_val, breach_count from param_vals_breaches where queue = 'a' ) src group by param; 

Ver SQL Fiddle con demostración