我有两个表,其简化结构如下所示:
RESPONSES
id
created
ACCESSORY VALUES
id
response_id
sensor_id
value
我想创建一个视图,将给定响应的所有附件值在一段时间内扁平化为一行(过滤response.created
)。我想我想要一个数据透视表或交叉表,但我对两者都不熟悉,而且我发现的示例主要处理已知数量的列。更复杂的是,如果用户在相关时间段内开始或停止跟踪某个给定的传感器,它只能在部分时间段内出现。理想情况下,当传感器不存在时,我会在该列中为任何行中的传感器保留一个 NULL。这可能吗?如果是这样,我是在正确的轨道上还是在错误的地方寻找?
将数据作为单个行获取的 SQL 看起来像
SELECT r.id, a.sensor_id, a.value from results_response r
INNER JOIN results_accessoryvalue a ON r.id = a.response_id
WHERE r.installation_id = 40
AND r.created BETWEEN '2013-04-01' AND '2013-05-01'
ORDER BY r.created
但我没有任何运气尝试在交叉表中使用它,因为我不知道如何指定动态列。