with dummytable as
(
Select table2.number, table2.paymentto
from table2
inner join table1 on table1.number = table2.number and table2.number='1'
and table2.paymentto is not null and table2.paymentto !='B'
)
update table1
set ProvCOBAdjustments = (Select TotCOBAdjustmentAmt
from table1, dummytable
where dummytable.paymentto='P'and dummytable.number = table1.number)
where table1.paymentto is null;
错误:“update”或附近的语法错误
答案 0 :(得分:1)
不确定是否是导致错误的原因,但您的最终where
子句看起来不对:
where table.paymentto is null
不应该读:
where table1.paymentto is null
代替?
答案 1 :(得分:0)
此代码中没有语法错误。在您发布此处之前或之后,您的原始表名或代码中可能存在某些内容。
答案 2 :(得分:0)
我想你想要这个:
update table1
set ProvCOBAdjustments = TotCOBAdjustmentAmt
from table1, dummytable
where dummytable.paymentto='P'and dummytable.number = table1.number
and table1.paymentto is null;
否则你会尝试做某种相关的子查询,而且这一切都是非常好的。
此外,逗号样式加入在这些日子里往往不赞成 - 我将重新编写连接:
update t1
set
ProvCOBAdjustments = TotCOBAdjustmentAmt
from
table1 t1
inner join
dummytable dt
on
dt.number = t1.number
where
dt.paymentto='P' and
t1.paymentto is null;
答案 3 :(得分:0)
SQL Server的版本是什么?
如果是SQL Server 2000或更早版本,则无法以当前形式运行此查询。
此查询使用所谓的CTE,公用表表达式(with dummytable as (...)
部分)。 SQL Server 2005中引入了CTE支持。
安装在我的somputer上的SQL Server 2008 R2不会在此查询中抱怨语法。