2014-09-29 168 views
-1

雖然我在這裏閱讀了很多答案,但這是我在stackoverflow上的第一個問題,而且我對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 

我試過很多東西,我不認爲我的理解循環很好呢。任何你能提供的幫助都會很棒。

回答

0

快速而骯髒(更改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