0

@tbl テーブルから @tbl2 テーブルにデータをループで入れたいと思います。残念ながら、insert (INSERT INTO @tbl2 Values(@ID,?,?)) に何を入力する必要があるかわかりません。つまり、2 番目と 3 番目のパラメーターです。

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

あなたはもうすぐそこにいます...これを見てください:

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 と呼ばれる追加の列を取得する必要があります。これは、後のスタジアムで参照するために使用する ID 列です。次に、@tbl に元の値を入力します。while ループでは、@tbl 値をいくつかの変数に取得し (レコードをループしている @count = id のおかげで)、それらを @tbl2 に挿入します。

于 2013-02-18T10:07:40.357 に答える
1

修理済み。

このテーブルID intに追加し、後でループでこの 2 つのパラメーターの単純な選択を作成します。

DECLARE @tbl TABLE ( SpecId BIGINT, SP DATETIME )

于 2013-02-18T09:58:43.747 に答える