2013-02-12 123 views
0

我需要在表格中輸入一個包含7種類型間距的126個站點的列表。我寫的腳本不對,我找不出原因。自動填充T-SQL表格

我想看到的是Site_Skey 1,1,1,1,1,1,1列和PitchType_Skey 1,2,3,4,5,6,7然後Site_Skey 2列, 2,2,2,2,2,2和一列PitchType_Skey 1,2,3,4,5,6,7這需要重複126次。

你能幫忙嗎?

當前腳本:這樣做的

DECLARE @PitchType_Skey INT 
    DECLARE @Site_Skey INT 

    SET @PitchType_Skey = 1 
    SET @Site_Skey = 1 

    WHILE (@PitchType_Skey <= 882) 
    WHILE (@Site_Skey <= 882) 

    BEGIN 
    INSERT INTO Capacity (PitchType_Skey, Site_Skey) 
    SELECT (CASE WHEN @PitchType_Skey % 7 = 0 THEN 7 ELSE @PitchType_Skey % 7 END), 
    (CASE WHEN @Site_Skey % 126 = 0 THEN 126 ELSE @Site_Skey % 126 END) 
    SET @PitchType_Skey = @PitchType_Skey + 1 
    SET @Site_Skey = @Site_Skey + 1 
    END 
+0

你想插入這些值連接起來,這樣'1,1,1,1,1 ,1,1'是一個值還是應該插入7行7個值? – 2013-02-12 12:32:52

+0

糾正我,如果我錯了,但你是否期待在每個pite_skey 7表中7行? – SQLGuru 2013-02-12 12:33:52

+0

數字1表示一個Site_Skey(這個表格中的一個外鍵,它連接到Site Table),所以我會假設我需要看到數字1 7次和下面的顏色1,2,3,4,5, 6,7。 – wafw1971 2013-02-12 12:36:20

回答

0

多simpilar方式....

DECLARE @PitchType_Skey INT 
DECLARE @Site_Skey INT 

SET @PitchType_Skey = 1 
SET @Site_Skey = 1 



WHILE (@Site_Skey < 127) 
BEGIN 
    IF @PitchType_Skey = 8 
    BEGIN 
    SET @PitchType_Skey = 1 
    SET @Site_Skey = @Site_Skey + 1 
    END 

    IF (@Site_Skey < 127) 
    BEGIN 
    INSERT INTO dbo.Capacity (PitchType_Skey, Site_Skey) 
    SELECT @PitchType_Skey, @Site_Skey 
    END 

    SET @PitchType_Skey = @PitchType_Skey + 1 

END 
+0

這是否會給你預期的結果? – SQLGuru 2013-02-12 12:50:04

+0

謝謝SQL Guru,這正是我想要的。 – wafw1971 2013-02-12 12:50:17

+0

我只注意到它會插入127的第一個記錄,我已經調整了上面的查詢。請不要忘記投票。 – SQLGuru 2013-02-12 12:52:28