【问题标题】:Merge data in SQL Server 2016在 SQL Server 2016 中合并数据
【发布时间】:2017-11-07 10:24:22
【问题描述】:

我有一个关于 SQL Server 的非常笼统的问题。

我有一个 SP,它以 @reportID 参数作为输入并返回该报告的历史记录。由于我有大约 3000 个报表,并且需要处理每个报表的历史记录,因此我创建了一个临时表,用于插入返回的数据,但没有报表 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 返回的每一行

非常感谢

【问题讨论】:

  • 在 GetHistory 列 ReportID 中返回值为 @ReportID
  • 如果我可以修改 SP,那将是显而易见的选择,忘记提及了。无论如何,我得到了解决方案:)

标签: sql sql-server tsql merge cursor


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    相关资源
    最近更新 更多