移调两行成单行(MySQL的)
问题描述:
在MySQL我有这种表(DATAS):移调两行成单行(MySQL的)
我想要做的是让日期,温度传感器(1)传感器(2)的温度在单排(按日期分组)。
现在我有两个记录的传感器1和传感器2相同的DTG ...
谢谢
答
使用GROUP_CONCAT
:
SELECT dtg, GROUP_CONCAT(temperature ORDER BY sensor_id)
FROM yourTable
GROUP BY dtg
演示在这里:
SQLFiddle
答
您可以使用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
答
这不是理想的硬编码在查询这些值,但这是行转置到列的解决方法:
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有时可能需要一段时间才能阅读,所以有可能会让秒数重叠。
这也看起来像你正在使用DS18S20(我要在黑暗中刺伤)一个RPi。我刚刚做了同样的事情,并有一些代码用于生成时间序列数据,可能会帮助您 - https://gist.github.com/calcinai/801e4e805139cd18278e45c5da090340 – calcinai