在MySql中,我有这样的表(数据):

我想要做的是在单行(按日期分组)中获取日期、传感器(1)的温度、传感器(2)的温度。
现在我有传感器1和传感器2的同一dtg的两个记录...
谢谢
发布于 2016-09-27 16:05:47
使用GROUP_CONCAT
SELECT dtg, GROUP_CONCAT(temperature ORDER BY sensor_id)
FROM yourTable
GROUP BY dtg演示:
SQLFiddle
发布于 2016-09-27 16:24:12
您可以使用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发布于 2016-09-27 16:52:07
在查询中对这些值进行硬编码并不理想,但这是将行转置为列的变通方法:
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如果开始获得不可预测的时间读数,您可能需要使用聚合。特别是考虑到DB18B20s有时可能需要一段时间才能读取,您可能会得到重叠的秒数。
https://stackoverflow.com/questions/39719294
复制相似问题