esultados de consulta dinâmica @mysql com GROUP BY

Tenho uma tabela para os dados que quero exportar para um CSV. Idealmente, eu gostaria de mudar as linhas e colunas, para que os dados sejam agrupados um pouco melhor.

ara explicar melhor, atualmente, o banco de dados se parece com iss

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

O que eu gostaria de agrupar o data_value pelo valor data_timestamp, para que os timestamps sejam agrupados e cada data_value para cada data_id seja mostrado em uma coluna, em vez de em uma linha.

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

Abaixo é a consulta que estou 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

Mas não é exatamente o que estou querendo, pois agora existem valores NULL sempre que um data_id não tem um valor. GROUP BY parece agrupar também o valor dos dados, o que não é o que eu quer

Alguma sugestão

EDITAR

Eu já tentei usar WHERE d.input_1 NÃO É NULL na consulta externa, mas não consigo obter os resultados ..

Antes do ONDE ...

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

Adicionar WHERE d.input_1 NÃO É NULL eliminará os valores de 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

Além disso, na realidade, tenho cerca de 20 IDs para agrupar, por isso não seria a melhor das idéias para OU todas elas também ..

questionAnswers(2)

yourAnswerToTheQuestion