0

テーブルにいくつかの列(P_1、P_2、P_3 ...)を順番に追加して更新したい。P_2 を更新するには、前の手順で P_1 を更新する必要があります。SSMSでこれを行うことができるループを書く方法はありますか

for i in (1 to 10)
     alter table tab1 add P_i
     if(i>1)
          update tab1 set P_i = P_(i-1)*2+[blah blah]
     else
          update tab1 set p_i = [blah blah]
     end
end
4

1 に答える 1

0

できますよ。これは、SSMS内から実行できるいくつかの条件付きロジックの例です。これは、WHILEループ、IF / THENステートメント、およびCASEステートメントを実行する方法を示しています。HTH。

-- DROP TABLE dbo.Test
CREATE TABLE dbo.Test ( myID INT );

DECLARE @iteration INT = 0;

WHILE @iteration < 10
BEGIN
    IF @iteration = 0
    BEGIN
        INSERT INTO dbo.Test VALUES (-1);
    END;
    ELSE
    BEGIN
        UPDATE dbo.Test
        SET myID = CASE 
                    WHEN @iteration = 1 THEN 0 
                    WHEN @iteration = 2 THEN 123
                    ELSE @iteration 
                   END;
    END;

    SELECT * FROM dbo.Test;

    SET @iteration += 1;
END;
于 2013-03-12T18:37:29.750 に答える