这是一个示例,我的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多个独特的标签和数月的时间
不确定如何解决此问题。
答案 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