Sql 循环水平数据并为每列创建多个记录

Sql 循环水平数据并为每列创建多个记录,sql,sql-server,stored-procedures,sql-insert,Sql,Sql Server,Stored Procedures,Sql Insert,我有一个名为dbo.SalesmanAccts的存储过程,它返回以下数据: 我想用dbo.SalesmanAccts的结果更新标题和细节表,即SalesmanHeader和SalesmanDetail。 我想插入SalesmanHeader(SalesmanID、SalesmanName、SalesmanAddress),这没有问题 棘手的部分如下。 我想在SalesmanDetail表中为每个帐户为每个销售人员插入多条记录。也就是说,我希望SalesmanDetail表如下所示: 请注意,

我有一个名为dbo.SalesmanAccts的存储过程,它返回以下数据:

我想用dbo.SalesmanAccts的结果更新标题和细节表,即SalesmanHeader和SalesmanDetail。 我想插入SalesmanHeader(SalesmanID、SalesmanName、SalesmanAddress),这没有问题

棘手的部分如下。 我想在SalesmanDetail表中为每个帐户为每个销售人员插入多条记录。也就是说,我希望SalesmanDetail表如下所示:

请注意,account1、Account2和account3都作为单独的记录存储在SalesmanDetail表中

有没有一种方法可以循环dbo.SalesmanAccts的结果,让它在一个新存储过程中同时插入语句,而不创建一个单独的用于插入头记录的存储过程和另一个用于插入细节记录的存储过程? 这可能吗

我正在使用SQLServer2008R2


提前谢谢

如何在SalesmanHeader表中插入行?是否要取消数据的IVOT。()或者这里的概念是
插入表名()值(选择unpivot数据)
unpivot完全按照我的要求做了-谢谢你的帮助!
INSERT SalesmanDetail
      (SalesmanID, SalesmanName, Account)
SELECT SalesmanID, SalesmanName, Account
FROM dbo.SalesmanAccts
UNPIVOT (Account FOR AccountNumber IN (Account1,Account2,Account3) ) p