我有两个表包含来自不同设备的数据,我希望每个日期(YMD格式)将它们组合在一起。每个表都有多个DeviceRowId,但在本例中,我只对7,13和14感兴趣。
我正在选择一个sqlite3数据库,我会将结果导出到csv
表温度
Code
表格
DeviceRowId, Temp_Avg, Date
7, 5.2, 2015-01-01
7, 5.6, 2015-01-02
7, 5.3, 2015-01-03
7, 4.7, 2015-01-04
7, 4.9, 2015-01-05
4, 19.0, 2015-01-01
4, 19.6, 2015-01-02
4, 18.9, 2015-01-03
4, 19.1, 2015-01-04
我无法保证所有设备每天都有一个条目,因此设备13在2015-01-05没有条目。 我想要实现的是:
DeviceRowId, Value, Date
13, 13200, 2015-01-01
13, 11200, 2015-01-02
13, 13700, 2015-01-03
13, 14200, 2015-01-04
14, 540, 2015-01-01
14, 570, 2015-01-02
14, 660, 2015-01-03
14, 590, 2015-01-04
14, 700, 2015-01-05
19, 350, 2015-01-01
19, 680, 2015-01-02
19, 920, 2015-01-03
19, 310, 2015-01-04
19, 700, 2015-01-05
这将让我每个日期绘制设备7,13和14的值。
由于
答案 0 :(得分:2)
使用union all
将数据汇集在一起后,您可以使用条件聚合进行处理:
select date,
max(case when DeviceRowId = 7 then temp_avg end) as Dev7,
max(case when DeviceRowId = 13 then temp_avg end) as Dev13,
max(case when DeviceRowId = 14 then temp_avg end) as Dev14
from (select Date, DeviceRowId, temp_avg
from table1
where DeviceRowId in (7, 13, 14)
union all
select Date, DeviceRowId, value
from table2
where DeviceRowId in (7, 13, 14)
) t
group by date
order by date;