0

我想循环将数据从@tbl 表放入@tbl2 表中。不幸的是,我不知道我必须在 insert (INSERT INTO @tbl2 Values(@ID,?,?)) 中放入什么,我的意思是第二个和第三个参数。

MSSQL 2008 R2

例如(表@tbl):

规格 ID | SP

3 | “2008 年 5 月 1 日上午 8 点 30 分 52 秒”

8 | “2008 年 5 月 1 日上午 8 点 30 分 52 秒”

9 | “2008 年 5 月 1 日上午 8 点 30 分 52 秒”

如果@count = 3 我想获取这些数据 (9 | '5/1/2008 8:30:52 AM')

DECLARE @tbl TABLE
(
    SpecId BIGINT,
    SP DATETIME
) 
DECLARE @tbl2 TABLE
(
    ID int,
    SpecId BIGINT,
    SP DATETIME
) 
DECLARE @ID INT
DECLARE @count INT
DECLARE @firstNumber INT
DECLARE @secondNumber INT
SET @firstNumber = @PageSize * 10
SET @secondNumber = @firstNumber - 10 

WHILE (@count <= @TotalRowsNumber)

BEGIN

   IF @count > @secondNumber and @count <= @firstNumber
   BEGIN
        SET @ID +=1
        INSERT INTO @tbl2 Values(@ID,?,?)
   END


   SET @count = (@count + 1)

END
4

2 回答 2

1

固定的。

我添加到这个表ID int并且稍后在循环中我为这两个参数创建了简单的选择:

声明 @tbl 表(SpecId BIGINT,SP DATETIME)

于 2013-02-18T09:58:43.747 回答
1

你快到了……看看这个:

DECLARE @tbl TABLE
(
  Id int identity(1, 1),
    SpecId BIGINT,
    SP DATETIME
) 
DECLARE @tbl2 TABLE
(
    ID int,
    SpecId BIGINT,
    SP DATETIME
) 
DECLARE @ID INT
DECLARE @count INT
DECLARE @firstNumber INT
DECLARE @secondNumber INT
declare @PageSize int
declare @TotalRowsNumber int

SET @firstNumber = @PageSize * 10
SET @secondNumber = @firstNumber - 10 

-- Populate tbl
insert
into    @tbl
select  value1, value2
from    original_table

set @TotalRowsNumber = @@rowcount
set @count = 1

WHILE (@count <= @TotalRowsNumber)

BEGIN

  select  @value1 = value1
        , @value2 = value2
  from    @tbl
  where   Id = @count 

   IF @count > @secondNumber and @count <= @firstNumber
   BEGIN
        SET @ID +=1
        INSERT INTO @tbl2 Values(@ID,@value1,@value2)
   END


   SET @count = (@count + 1)

END

我做了什么。@tbl 需要获得一个额外的列,称为 Id。这是一个标识列,用于在以后的体育场中进行引用。接下来,您使用原始值填充 @tbl。在 while 循环中,您将 @tbl 值放入一些变量中(感谢 @count = id 您正在循环记录),然后将它们插入 @tbl2

于 2013-02-18T10:07:40.357 回答