sql - 如何将 1 添加到存储过程中插入语句的列值?
问题描述
我有一个每小时更新一次的表(RPT.SummaryAggregates)。我需要创建一个存储过程,每周一次用(RPT.SummaryAggregates)中的总记录的快照填充表(RPT.WeeklyAggregates)(此SP 将使用SQL 代理作业设置)。每次运行存储过程时,我需要 (RPT.WeeklyAggregates) 的 Week 列自动递增 1。目前表中有一周的数据。
存储过程当前如下所示:
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;
表格列是周、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
子查询从目标表中检索最大值Week
,并将其递增;COALESCE()
处理表最初为空的情况(在这种情况下1
被插入)。
推荐阅读
- mongodb - Databricks 与 Cosmos DB Mongo API 的连接
- javascript - 将 request.body 解析为字符串,然后创建 JSON
- android - 我应该如何正确设置flutter项目来运行android插件
- pyspark - 独立 Pyspark 错误:打开的文件太多
- amazon-web-services - 用于文件上传的 AWS lambda
- python-3.x - 如何根据最近距离减少海量数据集合中的点数?
- git - 如何在 VPS 上使用 Git 进行 phpBB 部署
- angular - Angular 9 SSR 构建为 NgLocaleLocalization 引发错误
- php - 如何将 SOAP XML 请求转换为 PHP?
- tensorflow - Google Colab:GPU 不使用 tensorflow 1.12.0 加载