官方的语法如下:
PIVOT(
聚合函数(value_column)
FOR pivot_column
IN(<column_list>)
)
待转列
转后的效果图
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)
网友评论