请各位大侠,帮小弟解决一下这个问题呗。我刚开始学数据库,完全属于菜鸟水平
 大概的问题是这样的,根据下面 where条件,将查询到的结果 跟TEST表中一样的数据进行 sum,
代码如下: UPDATE TEST E
SET E.REQUEST_QTY += A.REQUEST_QTY,
E.REQUEST_AMT += A.REQUEST_AMT
FROM PU02121 A
LEFT JOIN
SA01110 B ON A.CLIENT_CODE = B.CLIENT_CODE
LEFT JOIN
ITEM_V C ON A.ITEM_CODE = C.ITEM_CODE
INNER JOIN
PU02120 D ON A.REQUEST_NO = D.REQUEST_NO
WHERE D.REQUEST_DATE BETWEEN '20120901' AND '20120930'
AND D.FACILITY = '1'
AND A.REQUEST_NO = E.REQUEST_NO AND A.REQUEST_SEQ = E.REQUEST_SEQ(上面用到的join 是因为还有其他变量需要加入到TEXT表中,除了上面那两项以外其他全部可以为空。 我只是为了让程序简便,才省略了其他的项)系统老提示我 E 附近有语法错误,希望各位大侠帮我解决,小弟不胜感激啊!

解决方案 »

  1.   

    UPDATE E
    SET E.REQUEST_QTY += A.REQUEST_QTY
    ...
      

  2.   

    UPDATE TEST E
    SET E.REQUEST_QTY += A.REQUEST_QTY......
    不对,要么update test,要么update e 当前要定义好e
      

  3.   

    改成这样试试:UPDATE E
    SET  E.REQUEST_QTY += A.REQUEST_QTY,
    E.REQUEST_AMT += A.REQUEST_AMT
    FROM TEST E
    INNER JOIN PU02121 A
    ON E.字段=A.字段        
    --你的问题在于语法错误,这种修改方式,必须在这里先将TEST表和后面的表进行联接,我这里暂时修改成和PU02121表联接。
    LEFT JOIN
    SA01110 B ON A.CLIENT_CODE = B.CLIENT_CODE
    LEFT JOIN
    ITEM_V C ON A.ITEM_CODE = C.ITEM_CODE
    INNER JOIN
    PU02120 D ON A.REQUEST_NO = D.REQUEST_NO
    WHERE D.REQUEST_DATE BETWEEN '20120901' AND '20120930'
    AND  D.FACILITY = '1'
    AND  A.REQUEST_NO = E.REQUEST_NO AND A.REQUEST_SEQ = E.REQUEST_SEQ具体语法:UPDATE <table> SET <col> = <new_value> [WHERE <where_condition>] !!! 
    UPDATE <table> SET <col> = <new_value> FROM <table> JOIN <another_table> ON <join_condition> WHERE <where_condition>