将两行转换为单行(mySql)

时间:2016-09-27 08:02:38

标签: mysql mysql-workbench

在MySql中

我有这种表(数据):

see here

我想要做的是将传感器(1)的日期,温度,传感器(2)的温度放在一行(按日期分组)。

现在,传感器1和传感器2的相同dtg有两条记录......

谢谢

3 个答案:

答案 0 :(得分:2)

使用GROUP_CONCAT

SELECT dtg, GROUP_CONCAT(temperature ORDER BY sensor_id)
FROM yourTable
GROUP BY dtg

在这里演示:

SQLFiddle

答案 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有时需要一段时间才能读取,可能会让秒数重叠。

相关问题