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

下面是我的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多个独特的标签和分月天数


不确定如何解决此问题。

使用
条件聚合

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不重要。但是需要为每个标记显式地编写。