SQL Server数据库中,PIVOT在帮助中这样描述滴:可以使用 PIVOT 和UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的***值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值

pivot 使用sql ,可根据自己情况变更,但要注意行转列的条件与列名要对应上 如:下面sql 中 转换列countDate ,值 result 分别在PIVOT 中对应上 ,

select * from (select agencyId,agencyName,i.countDate,
isnull(max(i.avgTotalScore),max(i.dbItemAvgRatio)) result,
isnull(max(i.emergencyDrillCount),0) '应急演练' ,
isnull(max(i.vehicleUnRepairNum),0) '维修维护'
from implement_main_table i with(nolock) 
where type = 3 and vehicleNum>0 and i.area like '湖南%'
and countDate>='2023-01' and countDate<='2023-12'
group by agencyId,i.agencyName,countDate) t 
PIVOT ( MAX(result) FOR  
      countDate IN ([2023-01],[2023-02],[2023-03],[2023-04],[2023-05],[2023-06],[2023-07],[2023-08],[2023-09],[2023-10],[2023-11],[2023-12]) 
  ) as tb ;

转换后:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐