使用while循环的表INSERT使用While循环

问题描述:

虽然我在这里阅读了很多答案,但这是我在*上的第一个问题,而且我对SQL很合理。我正在尝试使用WHILE循环(SQL Server 2008)将一些记录插入到表中。这里是我开始的数据:使用while循环的表INSERT使用While循环

SeasID FacilityID PL Zone Section Row FromSeat ToSeat 
11  17   1 g2  cf  a  1   5 
32  18   14 w13 r2  c  10   12 

我需要为每个唯一座位插入一行到新表中。这里是想什么我插入:

SeasID FacilityID PL Zone Section Row Seat 
11  17   1 g2  cf  a  1 
11  17   1 g2  cf  a  2 
11  17   1 g2  cf  a  3 
11  17   1 g2  cf  a  4 
11  17   1 g2  cf  a  5 

32  18   14 w13 r2  c  10 
32  18   14 w13 r2  c  11 
32  18   14 w13 r2  c  12 

我试过很多东西,我不认为我的理解循环很好呢。任何你能提供的帮助都会很棒。

快速而肮脏(更改1000到最高的座位号可能的。持久Numbers表格会帮助)

;WITH N(Number) AS (SELECT 1 AS Number UNION ALL SELECT Number + 1 FROM N WHERE Number < 1000) 
SELECT TheTable.*, N.Number AS Seat 
FROM TheTable 
INNER JOIN N 
ON ToSeat >= N.Number AND FromSeat <= N.Number 
ORDER BY N.Number 
OPTION(MAXRECURSION 1000) 
+0

谢谢。它完美的作品。但是,我不完全确定它是如何工作的,但我会接受它。 – Matt 2014-09-29 17:42:56

+0

第一行创建一个名为N的表,名为Number的列的值从1到1000,这用于加入数据表,因此您可以有效地复制每个N.Number的行,它位于from /列 – 2014-09-29 17:45:05

+0

我读过,我应该尽可能避免循环。不知何故,我所拥有的循环给了我16条记录,而不是8条。无论如何,谢谢你的帮助。对此,我真的非常感激。 – Matt 2014-09-29 17:52:38