重组MySQL表以为每个ID创建一列

时间:2020-06-19 12:25:47

标签: mysql sql select group-by pivot

我有一个具有以下结构的MySQL表:

+-------------+-------+-----------+
|  timestamp  | value | sensor_id |
+-------------+-------+-----------+

让我们举一个例子,存在三种可能的sensor_id:id1id2id3。 我想执行查询以以下格式输出数据:

+-------------+-----------+-----------+-----------+
|  timestamp  | value_id1 | value_id2 | value_id3 |
+-------------+-----------+-----------+-----------+

仅从一个ID中提取数据很简单,但是我正努力将其中的3个结合起来。

SELECT timestamp,
       value AS 'value_id1'
FROM table
WHERE sensor_id='id1'

编辑进行说明: (timestampsensor_id)在表格中是唯一的

1 个答案:

答案 0 :(得分:2)

使用条件聚合:

select 
    timestamp,
    max(case when sensor_id = 'id1' then value end) value_id1,
    max(case when sensor_id = 'id2' then value end) value_id2,
    max(case when sensor_id = 'id3' then value end) value_id3
from mytable
group by timestamp