尝试根据条件从列复制值时出现SQL错误

时间:2011-02-11 10:53:40

标签: sql-server

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”或附近的语法错误

4 个答案:

答案 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不会在此查询中抱怨语法。