2018-11-26 sql列转行 PIVOT 废了好大的劲

官方的语法如下:
PIVOT(
聚合函数(value_column)
FOR pivot_column
IN()
)
2018-11-26 sql列转行 PIVOT 废了好大的劲_第1张图片
待转列

转后的效果图
DECLARE 
 --保存最终执行的SQL语句
 @strSql nvarchar(1000),
 --定义变量保存要转化为列的数据
 @Date nvarchar(500)
--赋值 很重要,不赋值执行没结果
 SET @Date=''
 --赋值 把所有要转化为列的数据保存在字符串中,并且以逗号分隔
 SELECT  @Date=@Date+CarCANData_Date  FROM (SELECT DISTINCT '['+CONVERT(varchar(10), CarCANData_Date, 23)+'],' AS CarCANData_Date FROM CarCANDataHis_Infor) AS T1
 --打印@Date
  PRINT(@Date)
 --去掉末尾的一个逗号
 SET @Date=SUBSTRING(@Date,1,LEN(@Date)-1)
 --使用PIVOT运算符转化
 SET @strSql= 'SELECT * FROM (SELECT Car_PlateNumber,CONVERT(varchar(10), CarCANData_Date, 23) AS RQ,CarCANData_CumulativeMileage FROM dbo.CarCANDataHis_Infor left join Car_Infor c on CarCANData_CarID=Car_ID) AS a PIVOT(SUM(CarCANData_CumulativeMileage) FOR RQ IN ('+@Date+') ) AS b'
 --打印最终执行的SQL
 PRINT(@strSql)
 --执行sql
 EXEC (@strSql)

你可能感兴趣的:(2018-11-26 sql列转行 PIVOT 废了好大的劲)