PIVOT(
聚合函數(shù)(value_column)
FOR pivot_column
IN(<column_list>)
)
待轉(zhuǎn)列
轉(zhuǎn)后的效果圖
DECLARE
--保存最終執(zhí)行的SQL語(yǔ)句
@strSql nvarchar(1000),
--定義變量保存要轉(zhuǎn)化為列的數(shù)據(jù)
@Date nvarchar(500)
--賦值 很重要碗誉,不賦值執(zhí)行沒結(jié)果
SET @Date=''
--賦值 把所有要轉(zhuǎn)化為列的數(shù)據(jù)保存在字符串中秋茫,并且以逗號(hào)分隔
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)
--去掉末尾的一個(gè)逗號(hào)
SET @Date=SUBSTRING(@Date,1,LEN(@Date)-1)
--使用PIVOT運(yùn)算符轉(zhuǎn)化
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'
--打印最終執(zhí)行的SQL
PRINT(@strSql)
--執(zhí)行sql
EXEC (@strSql)