Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用存储过程最后一行中的单个值插入新行_Sql_Sql Server_Stored Procedures_Sql Update_Sql Insert - Fatal编程技术网

Sql 使用存储过程最后一行中的单个值插入新行

Sql 使用存储过程最后一行中的单个值插入新行,sql,sql-server,stored-procedures,sql-update,sql-insert,Sql,Sql Server,Stored Procedures,Sql Update,Sql Insert,请参阅下面的屏幕截图 我正在尝试在SQL Server 2014中创建一个存储过程,该过程执行以下操作: 将最后一条记录(如第1062行)中的“完成”位设置为真 从最后一条记录(以黄色突出显示)中获取“DateTo”值,并将其插入新行的“DateFrom”列中 由于其他列(BatchID、DateTo、Complete)是自动填充的,所以这应该是所需的全部内容 任何帮助都将不胜感激 这就是你想要的吗 update t set complete = 1 from (selec

请参阅下面的屏幕截图

我正在尝试在SQL Server 2014中创建一个存储过程,该过程执行以下操作:

  • 将最后一条记录(如第1062行)中的“完成”位设置为

  • 从最后一条记录(以黄色突出显示)中获取“DateTo”值,并将其插入新行的“DateFrom”列中

  • 由于其他列(BatchID、DateTo、Complete)是自动填充的,所以这应该是所需的全部内容

    任何帮助都将不胜感激

    这就是你想要的吗

    update t
        set complete = 1
        from (select top (1) t.*
              from t
              order by datefrom desc
             ) t;
    
    然后:

    insert into t (datefrom, complete)
        select top (1) dateto, 0
        from t
        order by datefrom desc;
    

    你需要两份声明。首先更新最新的行,然后插入新行:

    with cte as (select top (1) complete from billing_batch order by dateto desc)
    update cte set complete = 1;
    
    insert into billing_batch (datefrom)
    select max(dateto) 
    from billing_batch;
    

    试着用你的答案,@GMB第二步非常有效!然而,在第一步,我得到一个错误“关键字'order'附近的语法不正确”。我刚刚意识到@GMB,我还需要在新行的“datefrom”中添加1天,以便7天的计费周期能够正常工作properly@CapnElectric:
    dateadd(第1天,最大日期(dateto))