我有一个表,该表包含名为measured_time
,data_type
和value
的列。
在data_type
中,有两种类型,temperature
和humidity
。
我想使用measured_time
合并两行数据,如果它们具有相同的Django ORM
。
我正在使用Maria DB
。
使用原始SQL,以下查询可以实现我想要的功能。
SELECT T1.measured_time, T1.temperature, T2.humidity
FROM ( SELECT CASE WHEN data_type = 1 then value END as temperature,
CASE WHEN data_type = 2 then value END as humidity ,
measured_time FROM data_table) as T1,
( SELECT CASE WHEN data_type = 1 then value END as temperature ,
CASE WHEN data_type = 2 then value END as humidity ,
measured_time FROM data_table) as T2
WHERE T1.measured_time = T2.measured_time and
T1.temperature IS NOT null and T2.humidity IS NOT null and
DATE(T1.measured_time) = '2019-07-01'
原始表
| measured_time | data_type | value |
|---------------------|-----------|-------|
| 2019-07-01-17:27:03 | 1 | 25.24 |
| 2019-07-01-17:27:03 | 2 | 33.22 |
预期结果
| measured_time | temperaure | humidity |
|---------------------|------------|----------|
| 2019-07-01-17:27:03 | 25.24 | 33.22 |
答案 0 :(得分:0)
我从未使用过它,因此无法详细回答,但是您可以将原始SQL查询输入Django,并通过ORM返回结果。由于您已经掌握了SQL,因此这可能是最简单的方法。 Documentation here