繁体   English   中英

SQL将2列的值合并到行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM