Sql 如何以列名的形式从记录中获取数据
下面是我的SQL表数据的示例:Sql 如何以列名的形式从记录中获取数据,sql,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 数据量很大: 有60
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多个独特的标签和分月天数
不确定如何解决此问题。使用
条件聚合
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
使用条件聚合
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
我想你也可以把它转过来
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
我想你也可以把它转过来
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
谢谢刚刚添加了有关数据大小的信息。推荐的解决方案会改变吗?欢迎@luvlogic size不重要。但是需要为每个标签明确地写。谢谢。刚刚添加了有关数据大小的信息。推荐的解决方案会改变吗?欢迎@luvlogic size不重要。但是需要为每个标记显式地编写。