esultados de la consulta dinámica @mysql con GROUP BY

Tengo una tabla de datos que quiero exportar a un CSV. Idealmente, me gustaría cambiar las filas y columnas para que los datos se agrupen un poco mejor.

Para explicar más, actualmente, la base de datos tiene este aspecto ..

data_id     data_timestamp         data_value    
--------------------------------------------
1           2011-07-07 00:01:00    0.400  
1           2011-07-07 00:02:00    0.500
1           2011-07-07 00:03:00    0.600
1           2011-07-07 00:04:00    0.700
2           2011-07-07 00:01:00    0.100  
2           2011-07-07 00:02:00    0.200
2           2011-07-07 00:03:00    0.250
2           2011-07-07 00:04:00    2.300

Qué me gustaría agrupar data_value por el valor de data_timestamp, de modo que las marcas de tiempo estén agrupadas y cada data_value para cada data_id se muestre en una columna, en lugar de una fila.

data_timestamp         input_1    input_2     
--------------------------------------------
2011-07-07 00:01:00    0.400      0.100  
2011-07-07 00:02:00    0.500      0.200
2011-07-07 00:03:00    0.600      0.250
2011-07-07 00:04:00    0.700      2.300

Abajo está la consulta que estoy usando ...

SELECT d.data_timestamp, d.input_1, d.input_2
FROM (
    SELECT data_timestamp,
    IF(data_id=1,data_value,NULL) AS 'input_1',
    IF(data_id=2,data_value,NULL) AS 'input_2' FROM data
) AS d ORDER BY data_timestamp ASC

Pero no es exactamente lo que quiero, ya que ahora hay valores NULL cada vez que un data_id no tiene un valor. GROUP BY parece agrupar también el data_value, que no es lo que quiero.

¿Alguna sugerencia

EDITAR

Ya he intentado usar WHERE d.input_1 NO ES NULO en la consulta externa, pero no puedo obtener los resultados ..

Antes del DÓNDE ...

data_timestamp         input_1    input_2     
--------------------------------------------
2011-07-07 00:01:00    0.400      NULL
2011-07-07 00:01:00    NULL       0.100  
2011-07-07 00:02:00    0.500      NULL
2011-07-07 00:02:00    NULL       0.200
2011-07-07 00:03:00    0.600      NULL
2011-07-07 00:03:00    NULL       0.250
2011-07-07 00:04:00    0.700      NULL
2011-07-07 00:04:00    NULL       2.300

Agregar DONDE d.input_1 NO ES NULO eliminará los valores input_2 ..

data_timestamp         input_1    input_2     
--------------------------------------------
2011-07-07 00:01:00    0.400      NULL
2011-07-07 00:02:00    0.500      NULL
2011-07-07 00:03:00    0.600      NULL
2011-07-07 00:04:00    0.700      NULL

Además, en realidad, tengo alrededor de 20 identificaciones para agrupar, por lo que tampoco sería la mejor idea para O todos ellos ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta