你可以使用 unpivot 组件
选中的列将是您需要转换为行的列。目标列是将数据放入的列。数据透视键值列名称:数据透视列的名称。
之后,你就可以正常插入行了。
另一种方法是通过sql,我在这里使用t-sql,但其他数据库应该有类似的东西。首先将原始数据导入表格。然后使用 unpivot 执行与上述类似的操作。
CREATE TABLE #pvt (VendorID int, Emp1 int, Emp2 int,
Emp3 int, Emp4 int, Emp5 int);
GO
INSERT INTO #pvt VALUES (1,4,3,5,4,4);
INSERT INTO #pvt VALUES (2,4,1,5,5,5);
INSERT INTO #pvt VALUES (3,4,3,5,4,4);
INSERT INTO #pvt VALUES (4,4,2,5,5,4);
INSERT INTO #pvt VALUES (5,5,1,5,5,5);
GO
select * from #pvt
--Unpivot the table.
SELECT VendorID, Employee, Orders – destination table, first column is row group?
FROM
(SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
FROM #pvt) p – detail source
UNPIVOT
(Orders FOR Employee IN –orders: data, For: column group
(Emp1, Emp2, Emp3, Emp4, Emp5)
)AS unpvt;
这种方法的唯一问题是如果要添加更多列(存储),它就无法处理。但是你可以让它动态:
https://www.mssqltips.com/sqlservertip/3002/use-sql-servers-unpivot-operator-to-dynamically-normalize-output/