SQLServer pivot 行转列
Posted 码农
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer pivot 行转列相关的知识,希望对你有一定的参考价值。
设计表如下
--收入表 CREATE TABLE income ( inid INT PRIMARY KEY IDENTITY(1, 1), indate DATETIME, --时间 intype VARCHAR(10), -- 收入类型 amount DECIMAL(18, 2) --金额 )
查询按年月,将收入类型从行转成列
DECLARE @sql varchar(8000) --判断临时表是否存在,存在则删除 IF OBJECT_ID(\'tempdb..#TEMP\') IS NOT NULL DROP TABLE #TEMP --查询结果放入临时表中 SELECT LEFT(CONVERT(VARCHAR(100),indate,20),7) indate, intype,SUM(amount) amountINTO #TEMP FROM dbo.income GROUP BY LEFT(CONVERT(VARCHAR(100),indate,20),7),intype --所有收入类型 select @sql=isnull(@sql+\',\',\'\')+\'[\'+intype+\']\' from #TEMP GROUP BY intype ORDER BY intype --pivot 行转列 set @sql=\'select * from #TEMP pivot (SUM(income) for intype in (\'+@sql+\')) a\' --执行结果 exec(@sql) --判断临时表是否存在,存在则删除 IF OBJECT_ID(\'tempdb..#TEMP\') IS NOT NULL DROP TABLE #TEMP
未行转列:
行转列:
以上是关于SQLServer pivot 行转列的主要内容,如果未能解决你的问题,请参考以下文章
SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行