我有这种表(数据):
我想要做的是将传感器(1)的日期,温度,传感器(2)的温度放在一行(按日期分组)。
现在,传感器1和传感器2的相同dtg有两条记录......
谢谢
答案 0 :(得分:2)
使用GROUP_CONCAT
:
SELECT dtg, GROUP_CONCAT(temperature ORDER BY sensor_id)
FROM yourTable
GROUP BY dtg
在这里演示:
答案 1 :(得分:1)
您可以使用self join:
SELECT
a.dtg AS dtg1,
a.sensor_id AS sensor_id1,
a.temperature AS temperature1,
b.sensor_id AS sensor_id2,
b.temperature AS temperature2
FROM yourTable AS a
LEFT JOIN yourTable AS b
ON a.dtg = b.dtg
AND NOT a.sensor_id = b.sensor_id
GROUP BY a.dtg
答案 2 :(得分:1)
在查询中对这些值进行硬编码是不理想的,但这是将行转置为列的解决方法:
SELECT dtg,
COALESCE(IF(sensor_id='28-000004a9fa09', temperature, NULL)) t1,
COALESCE(IF(sensor_id='28-000004aa21cd', temperature, NULL)) t2
FROM readings
GROUP BY dtg
如果您开始获得不可预测的时间读数,则可能需要使用聚合。特别是考虑到DB18B20有时需要一段时间才能读取,可能会让秒数重叠。