我有一个表,其中包含200个不同的传感器和相应的传感器值。我想创建一个查询,其中不同的传感器值在不同的列中。

我已经尝试过加入和合并,但并没有达到预期的效果。

从实测值中选择*; //简化




  | sensorId |价值|
  
  | 6 | 110 |
  
  | 6 | 120 |


| 6 | 180 |

| 8 | 250 |

| 8 | 280 |

| 8 | 290 |



目标


  
    
    
    |传感器6 |传感器8 |
    
    | 110 | 250 |
    
    | 120 | 280 |
    
    | 180 | 290 |
    
    
  


PS:传感器的行始终相等。表格中还有时间戳列。我认为放在这里是无关紧要的。

最佳答案

您可以加入时间戳记。假设您的传感器每小时节省一次测量。您可以

SELECT
    DATE_FORMAT(sensor6.timestamp, '%Y-%m-%d-%H'),
    sensor6.value as sensor6,
    sensor8.value as sensor8
FROM
    sensorMeasures sensor6
JOIN
    sensorMeasures sensor8 ON
        DATE_FORMAT(sensor6.timestamp, '%Y-%m-%d-%H') =
        DATE_FORMAT(sensor8.timestamp, '%Y-%m-%d-%H')
WHERE
    sensor6.sensorId = 6
    AND sensor8.sensorId = 8


通过加入时间戳,您将获得一张包含来自同一日期/时间的所有传感器数据对的线表。
这两个where子句仅选择右行(第一个传感器数据来自第6个传感器,第二个传感器数据来自第8个传感器)。

当然,您可以更改DATE_FORMAT格式以匹配该数据库中数据存储的频率。

10-08 11:56