【问题标题】:How do I add 1 to a column value on an insert into statement in a stored procedure?如何将 1 添加到存储过程中插入语句的列值?
【发布时间】:2020-07-27 16:47:41
【问题描述】:

我有一个每小时更新一次的表 (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;

表格列是Week、BX、BK、MN、QN、SI、CF、Total。

【问题讨论】:

    标签: sql stored-procedures sql-insert auto-increment


    【解决方案1】:

    如果我正确地跟随你,你想要:

    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)。

    【讨论】:

    • 非常感谢专线小巴!这正是我所追求的,它将为 SSRS 仪表板上的小部件供电。
    猜你喜欢
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多