Sql 使用存储过程最后一行中的单个值插入新行
请参阅下面的屏幕截图 我正在尝试在SQL Server 2014中创建一个存储过程,该过程执行以下操作: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
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))