如何将 1 添加到存储过程中 insert into 语句的列值?
How do I add 1 to a column value on an insert into statement in a stored procedure?
我有一个 table 每小时更新一次 (RPT.SummaryAggregates)。我需要创建一个存储过程,每周一次用 (RPT.SummaryAggregates) 中总记录的快照填充 table (RPT.WeeklyAggregates)(此 SP 将使用 SQL代理工作)。我需要(RPT.WeeklyAggregates)的Week列在每次存储过程运行时自动递增1。当前 table 中有一周的数据。
存储过程当前如下所示:
INSERT INTO RPT.WeeklyAggregates
SELECT
1 AS Week,
SUM(BX),
SUM(BK),
SUM(MN),
SUM(QN),
SUM(SI),
SUM(CF),
(SUM(BX)+SUM(BK)+SUM(MN)+SUM(QN)+SUM(SI)+SUM(CF)) as Total
FROM RPT.SummaryAggregates
END;
table 列是周、BX、BK、MN、QN、SI、CF、总计。
如果我没听错,你想要:
INSERT INTO RPT.WeeklyAggregates(Week, BX, BK, MN, QN, SI, CF, Total)
SELECT
(SELECT COALESCE(MAX(Week), 0) + 1 FROM WeeklyAggregates),
SUM(BX),
SUM(BK),
SUM(MN),
SUM(QN),
SUM(SI),
SUM(CF),
SUM(BX)+SUM(BK)+SUM(MN)+SUM(QN)+SUM(SI)+SUM(CF)
FROM RPT.SummaryAggregates
子查询从目标 table 中检索最大 Week
值,并将其递增; COALESCE()
处理 table 最初为空的情况(在这种情况下插入 1
)。
我有一个 table 每小时更新一次 (RPT.SummaryAggregates)。我需要创建一个存储过程,每周一次用 (RPT.SummaryAggregates) 中总记录的快照填充 table (RPT.WeeklyAggregates)(此 SP 将使用 SQL代理工作)。我需要(RPT.WeeklyAggregates)的Week列在每次存储过程运行时自动递增1。当前 table 中有一周的数据。
存储过程当前如下所示:
INSERT INTO RPT.WeeklyAggregates
SELECT
1 AS Week,
SUM(BX),
SUM(BK),
SUM(MN),
SUM(QN),
SUM(SI),
SUM(CF),
(SUM(BX)+SUM(BK)+SUM(MN)+SUM(QN)+SUM(SI)+SUM(CF)) as Total
FROM RPT.SummaryAggregates
END;
table 列是周、BX、BK、MN、QN、SI、CF、总计。
如果我没听错,你想要:
INSERT INTO RPT.WeeklyAggregates(Week, BX, BK, MN, QN, SI, CF, Total)
SELECT
(SELECT COALESCE(MAX(Week), 0) + 1 FROM WeeklyAggregates),
SUM(BX),
SUM(BK),
SUM(MN),
SUM(QN),
SUM(SI),
SUM(CF),
SUM(BX)+SUM(BK)+SUM(MN)+SUM(QN)+SUM(SI)+SUM(CF)
FROM RPT.SummaryAggregates
子查询从目标 table 中检索最大 Week
值,并将其递增; COALESCE()
处理 table 最初为空的情况(在这种情况下插入 1
)。