1

私はいくつかの計算方法で短いコードを書いています、そしてそれを実行するために一時変数を使用しています。

SELECTステートメントを割り当てているだけ@sum1で機能しているのに、変更すると元@sum1 += SELECT...に戻りNULLます(添付の画像を参照)

私はすでに次のことを試しました:

  • キャストを試みました(ただし、@ sum1とactivityDurは両方ともINTとして定義されています)

  • SELECTステートメントを1つの変数に割り当ててから、その変数を新しい変数に割り当てようとしました。

  • ウェブ上で同様の問題を見つけようとしました(stackoverflowを含む)

どうも。

SET @sum1=0
        WHILE @i <= 10
            BEGIN   
 //**** HERE IS THE PROBLEM
SET @sum1 += (SELECT activityDur FROM dbo.tmp_activityCalculation WHERE RowNum = @i)
//**** 
IF (@sum1 > 200)
                    BEGIN
                        SET @index += 1
                        SET @sum1 = 0
                    END
                INSERT INTO tmp_finalCalc (RowNum, activityID, activityDur,actDay)
                SELECT 
                    RowNum,
                    activityID,
                    activityDur,
                    @sum1
                FROM tmp_activityCalculation WHERE Rownum = @i      
                SET @i += 1
            END

クエリの実行結果

4

1 に答える 1

1
SET @sum=0
    WHILE @i <= 10!
            BEGIN   
     //**** HERE IS THE PROBLEM
            SELECT @sum1=isnull(@sum1,0)+isnull(activityDur,'0') FROM dbo.tmp_activityCalculation WHERE RowNum = @i
    //**** 
                IF (@sum1 > 200)
                    BEGIN
                        SET @index += 1
                        SET @sum1 = 0
                    END
                INSERT INTO tmp_finalCalc (RowNum, activityID, activityDur,actDay)
                SELECT 
                    RowNum,
                    activityID,
                    activityDur,
                    @sum1
                FROM tmp_activityCalculation WHERE Rownum = @i      
                SET @i += 1
            END
于 2012-09-25T09:26:22.413 に答える