[英]SQL to Combine 2 Column value to Rows
我有类似的数据
ID SensorID Reading_Time Value Type
11 A3C3EB0B-1F5E-3737-B5F7-495BFA238F88 2016-06-02 14:38:16.4980000 -04:00 24.782219 0
12 A3C3EB0B-1F5E-3737-B5F7-495BFA238F88 2016-06-02 14:38:16.4980000 -04:00 23.121845 1
13 A3C3EB0B-1F5E-3737-B5F7-495BFA238F88 2016-06-02 14:38:46.5780000 -04:00 24.77972 0
14 A3C3EB0B-1F5E-3737-B5F7-495BFA238F88 2016-06-02 14:38:46.5780000 -04:00 23.121845 1
输入0表示温度,输入1表示湿度。 如何编写SQL以获得合并的结果像
SensorId Reading_Time Temp Humidity
A3C3EB0B-1F5E-3737-B5F7-495BFA238F88 2016-06-02 14:38:16.4980000 -04:00 24.782219 23.121845
A3C3EB0B-1F5E-3737-B5F7-495BFA238F88 2016-06-02 14:38:46.5780000 -04:00 24.77972 23.121845
我从这里有2个解决方案? 有谁知道哪个更快,最好?
一种方法是使用条件聚合,这是使此方法适用于任何数据库的好方法。
select sensorId,
reading_time,
min(case when type = 0 then value end) as Temp,
min(case when type = 1 then value end) as Humidity
from tbl
group by sensorId, reading_time
尝试这个:
WITH temperature (sID, rTime, temp)
AS (SELECT sensorid, reading_time, value FROM data_table WHERE type=0)
SELECT sensorid, reading_time, temp, value as humidity
FROM data_table JOIN temperature ON sensorid=sID AND reading_time=rTime
WHERE type=1
说明:
WITH
为所有温度行创建温度临时表 JOIN
的时间和传感器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.