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

时间:2013-12-24 17:18:18

标签: sql sql-server stored-procedures sql-insert

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

enter image description here

我想用dbo.SalesmanAccts的结果更新标题和详细信息表,即SalesmanHeader和SalesmanDetail。 我想INSERT INTO SalesmanHeader(SalesmanID,SalesmanName,SalesmanAddress),这没问题。

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

enter image description here

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

有没有办法循环dbo.SalesmanAccts的结果,让它在一个新的存储过程中同时执行INSERT INTO语句,而不创建一个单独的用于插入标题记录而另一个用于插入详细记录? 这甚至可能吗?

我正在研究SQL Server 2008R2

提前致谢!

1 个答案:

答案 0 :(得分:1)

INSERT SalesmanDetail
      (SalesmanID, SalesmanName, Account)
SELECT SalesmanID, SalesmanName, Account
FROM dbo.SalesmanAccts
UNPIVOT (Account FOR AccountNumber IN (Account1,Account2,Account3) ) p