我对sql查询相当新,所以请耐心等待。 我收到了这个Insert语句:
insert into Biztalk.Attestregler
SELECT 'A' AS STATUS
, Anv
, convert(VARCHAR(10), dateadd(day, @antalkorningar, (convert(DATETIME, Startdat))), 112) AS Startdate
, Slutdate
, Kstfrom
, KSTtom
, Projfrom
, Projtom
, Kontofrom
, Kontotom
, Amount
, Ersattare
, Eskalera
, 0
FROM Agresso.Attestregler
WHERE rtrim(ltrim(Anv + '' + Startdate + '' + Slutdate + '' + Kstfrom + '' + KSTtom)) NOT IN (
SELECT rtrim(ltrim(Anv + '' + Startdate + '' + Slutdate + '' + Kstfrom + '' + KSTtom))
FROM Agresso.Attestregler_history
)
UNION ALL
同时我想使用此新值更新Agresso.Attestregler
中的Eskalera列:
convert(varchar(10),dateadd(day,@antalkorningar,(convert(datetime,Startdate))),112)
在当前声明中有一种简单的方法吗?
提前完成,
答案 0 :(得分:0)
请测试以下脚本吗? 我简化了表的字段,你需要修改下面的脚本 请注意,有一个SQL OUTPUT clause with INSERT statement 正在执行Insert命令时,一些插入的数据存储在临时表中。 所以你将数据插入两个表。然后我使用临时表数据来更新Eskalera的原始表
CREATE TABLE #temp (
Id int,Eskalera datetime
)
insert Into Biztalk.Attestregler(Id,STATUS,Kstfrom,KSTtom)
output inserted.Id, getdate() into #temp (Id, Eskalera)
SELECT Id, 'A', Kstfrom, KSTtom
FROM Agresso.Attestregler
WHERE Id not in (SELECT Id FROM Agresso.Attestregler_history)
update Biztalk.Attestregler
set
Eskalera = t.Eskalera
from Biztalk.Attestregler a
inner join #temp t on a.Id = t.Id