我有一个表,其中包含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格式以匹配该数据库中数据存储的频率。