Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL语句为单个ID工作-如何使其在所有ID上迭代?_Sql_Sql Server_Sql Server 2008_Select_Stored Procedures - Fatal编程技术网

SQL语句为单个ID工作-如何使其在所有ID上迭代?

SQL语句为单个ID工作-如何使其在所有ID上迭代?,sql,sql-server,sql-server-2008,select,stored-procedures,Sql,Sql Server,Sql Server 2008,Select,Stored Procedures,我目前有两个SQL命令 从表中检索唯一ID的列表 另一个在这些ID上迭代,调用同一个存储过程,目前它只是一个insert语句 所以,举个例子(用假名),我现在打电话: SELECT DISTINCT ID FROM TableOfIDs; 将返回的值存储在列表中,然后调用以下存储过程 INSERT INTO Table ([Date], [Number], [ID]) VALUES( @CurrDate,

我目前有两个SQL命令

从表中检索唯一ID的列表

另一个在这些ID上迭代,调用同一个存储过程,目前它只是一个insert语句

所以,举个例子(用假名),我现在打电话:

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都是TableOfID表中的外键

我如何才能使所有这些都在一个查询或一个存储过程中运行,而不是在一个查询中检索所有ID,并在一个晚上调用约400个存储过程对其进行迭代?:)

非常感谢,;如果需要更多的细节,请询问,我会填补空白


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

我不明白。您正在谈论的存储过程是否只包括您提到的insert语句?不确定为什么我收到了对这个问题的否决票?对我来说,这似乎是一个完全合理的问题。我不明白。您正在谈论的存储过程是否只包括您提到的insert语句?不确定为什么我收到了对这个问题的否决票?对我来说,这似乎是一个完全合理的问题。
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