2011-05-27 73 views
0

我有一个SQL查询这样的,它给人一种语法错误,但我找不到它是什么:MySQL视图错误

CREATE VIEW 
    vw_hs_hr_wf_main_data AS 
     select mo.wfmod_id, 
      mo.wfmod_name, 
      mo.wfmod_view_name, 
      ty.wftype_code, 
      ty.wftype_description, 
      ty.wftype_table_name, 
      ty.wftype_view_name, 
      ma.wfmain_id, 
      ma.wfmain_sequence, 
      CASE 
       WHEN ap.wf_main_app_employee IS NULL 
        THEN ma.wfmain_approving_emp_number 
       ELSE ap.wf_main_app_employee 
      END CASE AS wfmain_approving_emp_number, 
      ma.wfmain_flow_id, 
      ty.wftype_update_field, 
      ty.wftype_assembly, 
      ty.wftype_assembly_class, 
      ma.wfmain_previous_id, 
      ty.wftype_cancelmain_field, 
      ma.wfmain_application_date, 
      ty.wftype_cancelstatus_field, 
      ty.wftype_appmain_field, 
      ty.wftype_bulk_app_flg, 
      ty.wftype_sort_field_name 
     FROM hs_hr_wf_module mo INNER JOIN hs_hr_wf_type ty 
      ON mo.wfmod_id = ty.wfmod_id 
     INNER JOIN hs_hr_wf_main ma 
      ON ty.wftype_code = ma.wftype_code 
     LEFT JOIN hs_hr_wf_main_app_person ap 
      ON ma.wfmain_id = ap.wfmain_id 
       AND ma.wfmain_sequence = ap.wfmain_sequence 
     WHERE (ma.wfmain_iscomplete_flg = 0); 

错误消息:

#1064 - 你在您的SQL语法中有错误;检查对应于你的MySQL服务器版本在第11

+2

这可能是有益的,包括在S pecific错误消息以及。 – wilbbe01 2011-05-27 05:27:32

+0

#1064 - 您的SQL语法错误;检查对应于您的MySQL服务器版本的手册,以便在第11行'CASE AS wfmain_approving_emp_number,ma.wfmain_flow_id,ty.wftype_update_fiel'使用正确的语法 这里是我的错误 – 2011-05-27 05:28:34

回答

2

你不需要END CASE关闭CASE使用近“情况下wfmain_approving_emp_number,ma.wfmain_flow_id,ty.wftype_update_fiel”正确的语法手册,只是END

END AS wfmain_approving_emp_number, 

在你的情况下更好的选择将是一个COALESCE电话:

COALESCE(ap.wf_main_app_employee, ma.wfmain_approving_emp_number) 
AS wfmain_approving_emp_number 
+0

是的它是你是大师谢谢 – 2011-05-27 05:40:18

+0

嗨小问题。我可以执行视图时,回顾数据我的wfmain_approving_emp_number字段数据总是追加3字体的实际数据示例emp数应该是8,但它的显示为38 – 2011-05-27 06:43:51

+0

@罗珊:这没有任何意义,你有任何三分你的SQL或数据?顺便说一句,我用比CASE声明更简单的选项更新了我的答案。 – 2011-05-27 06:59:02