求大神指点,sql那里错啦。查不出数据,谢谢
MERGE INTO TMP3B90C8C7F05911E79701005056F T1
 USING(SELECT T3.FDATAVALUE AS FDATAVALUE ,T2.FENTRYID AS FENTRYID FROM T_SAL_ORDERENTRY T2
   LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L T3 ON T2.F_PAEZ_ASSISTANT=T3.FENTRYID) T4
   ON (T1.FORDERID=T4.FENTRYID)
   WHEN MATCHED THEN
   UPDATE SET T1.FLYC_Text=T4.FDATAVALUE
   WHEN NOT MATCHED THEN 
   INSERT (T1.FLYC_Text) VALUES (NULL);

解决方案 »

  1.   

    一个DML语句,要显示什么数据?
      

  2.   

    你这个正好就是 不加 exists 的 update 全表
      

  3.   


    以下为报错信息,各位大神麻烦指点,谢谢“Kingdee.BOS.SQL.Exception.ParserException”类型的异常在 Kingdee.BOS.SQL.dll 中发生,但未在用户代码中进行处理其他信息: parse error. detail message is : Error: expect token <Punctuation,)>, but current token is <Punctuation,.>, at line 9, column 13)source sql is : MERGE INTO TMP10356E36F08111E7AC14B88198B A   USING (SELECT t1.FENTRYID as FENTRYID,t2.FDATAVALUE as FDATAVALUE  FROM T_SAL_ORDERENTRY t1  left join T_BAS_ASSISTANTDATAENTRY_L t2 on t2.FENTRYID=t1.F_PAEZ_ASSISTANT)B   ON (B.FENTRYID=A.FORDERID)   WHEN MATCHED THEN   UPDATE SET A.FLYC_Text=B.FDATAVALUE  WHEN NOT MATCHED THEN   INSERT (T1.FLYC_Text) VALUES ('');
      

  4.   

    你把这句话放到plsql中执行,看看可以不
      

  5.   


    执行报错
    消息 10739,级别 15,状态 1,第 17 行
    MERGE 语句中使用的插入列列表中不能包含多部分标识符。请改用单部分标识符。
      

  6.   


    去掉这2句后可以执行啦,但是我需要在不符合ON后面的条件是,将T1.FLYC_Text的值设置为默认的值,此时以下语句报错,请教如何改,谢谢
    WHEN NOT MATCHED THEN   INSERT (T1.FLYC_Text) VALUES ('');
      

  7.   

    到底没有匹配到的时候是“更新为空值”?还是“设置为默认的值”???如果像你语句里写的那样,想插入一个空值,这是没有意义的事情,插入一个空行算什么意思? 如果设置为默认值(当前前提是你设置了该字段的默认值),那么就直接:  INSERT (FLYC_Text) VALUES (DEFAULT);
      

  8.   


    想设置为没有匹配的设置为默认值
    即为:INSERT (FLYC_Text) VALUES (正常);  这样写也会报错  消息 10739,级别 15,状态 1,第 17 行
    MERGE 语句中使用的插入列列表中不能包含多部分标识符。请改用单部分标识符。
      

  9.   


    想设置为没有匹配的设置为默认值
    即为:INSERT (FLYC_Text) VALUES (正常);  这样写也会报错  消息 10739,级别 15,状态 1,第 17 行
    MERGE 语句中使用的插入列列表中不能包含多部分标识符。请改用单部分标识符。
    INSERT (FLYC_Text) VALUES ('正常'); 字符串要用单引号引起来
      

  10.   

    教你一个方法,把select简化一下,先验证merge into ... when的结构是否正确使用,
      

  11.   

    Merge都没搞清楚,Insert部分你想插入什么数据?NULL每一个不匹配就插入一个NULL,为了最后数有多少个?
    T1没有主键且都允许为空的话可能不会报错,但是不会有这样的写法,把T4中不匹配的KEY值插入到T1中会更有意义,
    Update部分和Insert部分都应该用到T4的,否则你这Merge的合理性就很值得怀疑。你先撇开Merge分步把逻辑设计出来,再考虑是否适用于Merge吧,
    隐约的感觉着你是想分两种case执行Update,没有Insert的需求