Sql 重复While语句

Sql 重复While语句,sql,while-loop,Sql,While Loop,我需要一个While语句的帮助,我以前从未使用过,我想知道我必须重新吃序列,直到我达到目标: 比如说 1 2 3 4 1 2 3 4 Until 5000 我试着写我自己的,但被卡住了: USE Occupancy CREATE TABLE Bookings2 (Booking_Skey INT IDENTITY (1,1) not null, PitchType_Skey INT not null) DECLARE @PitchType_Skey INT SET @PitchTyp

我需要一个While语句的帮助,我以前从未使用过,我想知道我必须重新吃序列,直到我达到目标:

比如说

1
2
3
4
1
2
3
4
Until 5000
我试着写我自己的,但被卡住了:

USE Occupancy
CREATE TABLE Bookings2
(Booking_Skey   INT IDENTITY (1,1) not null,
PitchType_Skey  INT  not null)

DECLARE @PitchType_Skey INT
SET @PitchType_Skey = 1
WHILE (@PitchType_Skey <= 4)

BEGIN
INSERT INTO Bookings2(PitchType_Skey)
SELECT @PitchType_Skey
SET @PitchType_Skey = @PitchType_Skey + 1
END
使用占用率
创建表Bookings2
(1,1)不为空,
PitchType_Skey INT不为空)
声明@PitchType_Skey INT
设置@PitchType_Skey=1

WHILE(@PitchType_Skey将WHILE中的选择替换为

SELECT (CASE WHEN @PitchType_Skey % 4 = 0 THEN 4 ELSE @PitchType_Skey % 4 END)
%是模数或余数,因此它得到@PitchType_Skey/4的余数(保证值小于4)

然后必须将0替换为4

WHILE (@PitchType_Skey <= 5000)
BEGIN
  INSERT INTO Bookings2(PitchType_Skey)
  SELECT (CASE WHEN @PitchType_Skey % 4 = 0 THEN 4 ELSE @PitchType_Skey % 4 END)
  SET @PitchType_Skey = @PitchType_Skey + 1
END

WHILE(@PitchType_Skey实际上您不需要一段时间,因为您可以使用master..spt_值

WITH t1250
     AS (SELECT TOP 1250 Row_number() 
                           OVER( 
                             ORDER BY t1.number) AS N 
         FROM   master..spt_values t1 
                CROSS JOIN master..spt_values t2) 
INSERT INTO Bookings2
      (PitchType_Skey)
    
SELECT v.number 
FROM   master..spt_values v 
       CROSS JOIN t1250
WHERE  v.type = 'P' 
       AND v.number > 0 
       AND v.number < 5

您好,您的问题对您没有多大帮助,您能告诉我们您在这段时间里想要什么吗?我不太确定您想在这里完成什么。例如,您想重复“1,2,3,4”序列吗5000次?就此而言,我不太确定您的表的用途。基本上,我可以告诉您如何使用WHILE循环,但您使用WHILE循环和Bookings2表来准确解决什么问题?您的代码运行良好。问题是什么?适用于我Sql Server 2012。您得到了什么?它用于填充虚拟数据(我是SQL新手)我需要代码来填充5000行重复序列1,2,3,4的数据。因此,1,2,3,4,1,2,3,4我以后还需要做另一列,做同样的事情,但它将重复1到126行,直到5000行。我希望这更有意义。
WITH t5000
     AS (SELECT TOP 5000 Row_number() 
                           OVER( 
                             ORDER BY t1.number) AS N 
         FROM   master..spt_values t1 
                CROSS JOIN master..spt_values t2) 
INSERT INTO Bookings2
   (PitchType_Skey)
SELECT 
      CASE WHEN n % 4 = 0 THEN 4 ELSE n % 4 END
FROM t5000