2013-02-12 85 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