SQL语句为单个ID工作-如何使其在所有ID上迭代?
我目前有两个SQL命令 从表中检索唯一ID的列表 另一个在这些ID上迭代,调用同一个存储过程,目前它只是一个insert语句 所以,举个例子(用假名),我现在打电话: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,
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