使用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)
谢谢。它完美的作品。但是,我不完全确定它是如何工作的,但我会接受它。 – Matt 2014-09-29 17:42:56
第一行创建一个名为N的表,名为Number的列的值从1到1000,这用于加入数据表,因此您可以有效地复制每个N.Number的行,它位于from /列 – 2014-09-29 17:45:05
我读过,我应该尽可能避免循环。不知何故,我所拥有的循环给了我16条记录,而不是8条。无论如何,谢谢你的帮助。对此,我真的非常感激。 – Matt 2014-09-29 17:52:38