如何从记录中获取数据作为列名

时间:2019-07-10 18:20:17

标签: sql

这是一个示例,我的SQL表数据如下所示:

ts              name    avg
1/1/2019 12:01  tag1    10
1/1/2019 12:01  tag2    15
1/1/2019 12:02  tag1    11
1/1/2019 12:02  tag2    16

这是我希望获取结果的方式:

ts             tag1 tag2
1/1/2019 12:01  10  15
1/1/2019 12:02  11  16

数据量很大: 有600多个独特的标签和数月的时间

不确定如何解决此问题。

2 个答案:

答案 0 :(得分:1)

使用Conditional Aggregation

select ts,
       sum(case when name='tag1' then avg end) as tag1,
       sum(case when name='tag2' then avg end) as tag2
  from tab
 group by ts

答案 1 :(得分:1)

我也可以将其旋转

select * from 
(
    select ts,name, AVG(avg) as averagePoint from tableName group by ts,name
)   groupedResult
PIVOT 
(
    AVG(averagePoint) for name IN ([Tag1],[Tag2])
)pivotResult