0

現在、2 つの SQL コマンドがあります。

テーブルから一意の ID のリストを取得します。

もう 1 つは、同じストアド プロシージャを呼び出すこれらの ID を繰り返し処理しますが、これは現時点では単なる挿入ステートメントです。

したがって、(偽の名前で)例を挙げると、現時点では次のように呼び出しています:

SELECT DISTINCT ID FROM TableOfIDs;

返された値をリストに格納し、次のストアド プロシージャを呼び出します。

INSERT INTO Table ([Date], [Number], [ID]) VALUES( @CurrDate,
                                                   (SELECT SUM(Number2) 
                                                    FROM Table2 
                          WHERE RowID = @ID
                          AND CurrDate = (SELECT MAX(CurrDate) 
                                    FROM Table2
                                    WHERE RowID = @ID))
                    ,@ID)

したがって、簡略化された表は次のようになります。

Table
Date | Number | ID (FK)

Table2
CurrDate | RowID(FK) | Number2

両方の ID は、TableOfIDs テーブルへの外部キーです。

1 つのクエリですべての ID を取得し、1 晩に最大 400 のストアド プロシージャを呼び出すのではなく、これらすべてを 1 つのクエリまたは 1 つのストアド プロシージャで実行するにはどうすればよいでしょうか? :)

どうもありがとう; さらに詳細が必要な場合はお問い合わせください。ギャップを埋めます。

どちらも同じテーブルへの外部キーです。

4

1 に答える 1

3
INSERT  INTO TABLE
        ( [Date]
        , [Number]
        , [ID]
        )
        SELECT  @CurrDate
              , SUM(Number2)
              , ID
        FROM    TABLE2
                JOIN ( SELECT   ID
                              , MAX(CurrDate) AS MaxDate
                       FROM     Table2
                       GROUP BY ID
                     ) x ON Table2.ID = x.ID
                            AND Table2.CurrDate = x.MaxDate
        GROUP BY Table2.ID
于 2012-06-20T11:18:35.720 に答える