0

我目前有两个 SQL 命令。

一个从表中检索唯一 ID 的列表。

另一个迭代这些 ID 调用相同的存储过程,此时它只是一个插入语句。

因此,举个例子(使用假名),目前我正在打电话:

SELECT DISTINCT ID FROM TableOfIDs;

并将返回值存储在 List 中,然后调用以下存储过程。

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 表的外键。

我怎样才能做到这一点,以便所有这些都在一个查询或一个存储过程中运行,而不是在一个查询中检索所有 ID,并在它们上迭代,每晚调用约 400 个存储过程?:)

非常感谢; 如果需要更多详细信息,请询问,我将填补空白。

它们都是同一张表的外键。

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 回答