2013-02-18 32 views
0

我想循環把數據放到@tbl表的@ tbl2表中。不幸的是,我不知道我必須插入什麼(INSERT INTO @ tbl2 Values(@ID,?,?))我的意思是第二個和第三個參數。過程分頁GridView

MSSQL 2008 R2

例如(表@tbl):

規範ID | SP

3 | '2008年5月1日8:30:52'

8 | '5/1/2008 8:30:52 AM'

9 | 「2008年5月1日上午08時30分五十二秒」

和如果@count = 3我想借此數據(9 |「2008年5月1日上午08時30分五十二秒」)

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 
+0

我不明白。你想做什麼?你想要什麼輸出數據?用什麼輸入? – Arion 2013-02-18 09:00:31

+1

我會撒謊把數據從tbl到tbl2 INSERT INTO tbl2值(ID,SpecId,SP) – 2013-02-18 09:02:38

回答

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

1

固定。

我加入到這個表ID INT後來在循環創建簡單的選擇對於這兩參數:

DECLARE @tbl表 ( 規範ID BIGINT, SP DATETIME )