在 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
我有一个关于 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