在MS SQL Server中使用时间线转换excel文件

将x轴上的时间轴(以及每个月的值)转换为MS SQL Server中下述格式的Excel文件的最佳方法是什么?

例如,Excel文件具有以下格式: 在这里输入图像说明

转换后,MS SQL Server中的表应该如下所示: 在这里输入图像说明

MS SQL Server中最有效的方法是什么?

这可以使用unpivot完成,请尝试以下操作:

 SELECT [name], [Description],Months, Mon FROM ( SELECT [name], [Description], [Jan], [Feb],[mar],[Apr],[May],[June],[July] FROM yourtable ) AS n UNPIVOT ( Mon FOR Months IN ([Jan], [Feb],[mar],[Apr],[May],[June],[July]) ) AS up; 

我的完整脚本在下面进行testing:

 create table #temp ( [name] varchar(255), [Description] varchar(255), [Jan] int, [Feb] int, [Mar] int, [Apr] int, [May] int, [June] int, [July] int ) insert into #temp values('Name1','Description1',4,6,8,8,4,5,7) ,('Name2','Description2',9,7,7,5,8,1,8) ,('Name3','Description3',1,10,1,4,6,4,3) ,('Name4','Description4',6,7,1,7,3,2,1) ,('Name5','Description5',3,9,8,6,6,5,7) ,('Name6','Description6',10,2,5,9,10,8,10) ,('Name7','Description7',10,8,5,7,10,7,8) SELECT [name], [Description],Months, Mon FROM ( SELECT [name], [Description], [Jan], [Feb],[mar],[Apr],[May],[June],[July] FROM #temp ) AS n UNPIVOT ( Mon FOR Months IN ([Jan], [Feb],[mar],[Apr],[May],[June],[July]) ) AS up; drop table #temp