在 SQL Server 2016 中合并数据

Merge data in SQL Server 2016

我有一个关于 SQL 服务器的非常普遍的问题。

我有一个 SP,它以 @reportID 参数作为输入并返回该报告的历史记录。因为我有大约 3000 个报告并且需要处理每个报告的历史记录,所以我创建了一个临时的 table 用于插入返回数据的地方,但是没有报告 ID 是没有用的。

OPEN cursor_reportStats
FETCH NEXT FROM cursor_reportStats INTO @ReportID

WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @temp
EXEC dbo.GetHistory @ReportID

FETCH NEXT FROM cursor_reportStats INTO @ReportID
END

所以我需要的是将@ReportID 附加到 GetHistory

返回的每一行

非常感谢

添加第二个 @temptable,它将包含 ReportID 列 + 其余数据。您的 @temp table 将成为缓冲区 table 并将在每次迭代时被删除。在每次迭代结束时,您将在第二个 @temptable 中插入当前 @ReportID 值和来自缓冲区 table 的数据。

所以,你会得到这样的东西:

OPEN cursor_reportStats
FETCH NEXT FROM cursor_reportStats INTO @ReportID

WHILE @@FETCH_STATUS = 0
BEGIN

DELETE FROM @temp;

INSERT INTO @temp
EXEC dbo.GetHistory @ReportID


INSERT INTO @temptable
SELECT @ReportID, *
FROM @temp

FETCH NEXT FROM cursor_reportStats INTO @ReportID
END