案例在oracle中不起作用

案例在oracle中不起作用,oracle,Oracle,对于查询中的一列,我需要一个CASE语句 情况是 如果我的列名ltt.f\u complete task\u completed值为0,则该值应为NO,如果1则为YES 我试着像下面一样,但得到了 ORA-00905:缺少关键字 这是我的疑问 SELECT flv.property_name project_name, flv.building building_name, flv.flat_no unit_no, ldet.customer_fname || ' '

对于查询中的一列,我需要一个
CASE
语句

情况是

如果我的列名
ltt.f\u complete task\u completed
值为
0
,则该值应为
NO
,如果
1
则为
YES

我试着像下面一样,但得到了

ORA-00905:缺少关键字

这是我的疑问

SELECT flv.property_name project_name, flv.building building_name,
   flv.flat_no unit_no,
      ldet.customer_fname
   || ' '
   || ldet.customer_mname
   || ' '
   || ldet.customer_lname customer_name,
   la.booking_date holding_date, ltt.start_date task_date,
   tid.task_desc task_type, fol.next_follow_up_date,
   ltt.remarks task_comment, ltt.f_complete task_completed,
   CASE TASK_VALUE WHEN '0' THEN 'NO'
   WHEN '1' THEN 'YES',
   act.act_desc activity_description, flv.follow_type followup_type,
   fol.remarks followup_comment,
   fol.next_follow_up_date next_followup_date,
   actt.act_desc next_todo_activity
   FROM xxcus.xxacl_pn_leases_all la,
     (SELECT *
        FROM xxcus.xxacl_pn_lease_det
       WHERE sr_no = 1) ldet,
     xxcus.xxacl_pn_lease_task_trl ltt,
     xxcus.xxacl_pn_customer_followup fol,
     xxacl_pn_flat_det_v flv,
     xxcus.xxacl_pn_hold_task_v tid,
     xxcus.xxacl_pn_hold_act_v act,
      xxcus.xxacl_pn_followup_type_v flv,
      xxcus.xxacl_pn_hold_act_v actt
  WHERE la.booking_no = ltt.draft_form_no(+)
   AND ltt.draft_form_no = fol.booking_no(+)
   AND ltt.task_id = fol.task_id(+)
  AND ltt.task_sr_no = fol.task_sr_no(+)
  AND la.delete_flag = 'N'
   AND la.booking_no = ldet.booking_no
  AND fol.followup_date = TO_DATE (SYSDATE - 1)
   AND la.flat_id = flv.flat_id
  AND ltt.task_id = tid.task_id
  AND fol.activity_id = act.act_id
  AND fol.followup_type_id = flv.follow_type_id
  AND fol.next_activity_id = actt.act_id
请提出问题所在

更新

SELECT flv.property_name project_name, flv.building building_name,
   flv.flat_no unit_no,
      ldet.customer_fname
   || ' '
   || ldet.customer_mname
   || ' '
   || ldet.customer_lname customer_name,
   la.booking_date holding_date, ltt.start_date task_date,
   tid.task_desc task_type, fol.next_follow_up_date,
   ltt.remarks task_comment, ltt.f_complete task_completed,       
   act.act_desc activity_description, flv.follow_type followup_type,
   fol.remarks followup_comment,
   fol.next_follow_up_date next_followup_date,
   actt.act_desc next_todo_activity
 FROM xxcus.xxacl_pn_leases_all la,
   (SELECT *
      FROM xxcus.xxacl_pn_lease_det
     WHERE sr_no = 1) ldet,
   xxcus.xxacl_pn_lease_task_trl ltt,
   xxcus.xxacl_pn_customer_followup fol,
   xxacl_pn_flat_det_v flv,
   xxcus.xxacl_pn_hold_task_v tid,
   xxcus.xxacl_pn_hold_act_v act,
   xxcus.xxacl_pn_followup_type_v flv,
   xxcus.xxacl_pn_hold_act_v actt
  WHERE la.booking_no = ltt.draft_form_no(+)
   AND ltt.draft_form_no = fol.booking_no(+)
   AND ltt.task_id = fol.task_id(+)
    AND ltt.task_sr_no = fol.task_sr_no(+)
    AND la.delete_flag = 'N'
   AND la.booking_no = ldet.booking_no
   AND fol.followup_date = TO_DATE (SYSDATE - 1)
    AND la.flat_id = flv.flat_id
   AND ltt.task_id = tid.task_id
   AND fol.activity_id = act.act_id
  AND fol.followup_type_id = flv.follow_type_id
  AND fol.next_activity_id = actt.act_id

缺少的关键字是
END
。应该是这样写的:

CASE TASK_VALUE WHEN '0' THEN 'NO'
WHEN '1' THEN 'YES' END

缺少的关键字是
END
。应该是这样写的:

CASE TASK_VALUE WHEN '0' THEN 'NO'
WHEN '1' THEN 'YES' END

现在获取错误为
ORA-00923:FROM关键字not found where expected
@coder更新您的原始问题以反映您获取新错误的实际查询。我认为,您应该在
结束后添加
。您可以更新您的查询吗?我尝试了
ltt.f\u complete task\u completed,案例ltt.f\u complete当“0”时,然后是“否”,当“1”时,然后是“是”结束,
但是错误为
ORA-00932:不一致的数据类型:预期的数字得到字符
我通过删除
'1'
和0中的
引号破解了它,现在它工作了。错误为
ORA-00923:from关键字未找到预期的位置
@coder更新您的原始问题以反映您的实际查询从中获取新错误。然后您应该在
结束后添加
,我认为。你能更新你的查询吗?我尝试了
ltt.f\u complete task\u complete,CASE ltt.f\u complete当'0'时,然后'NO'当'1'时,然后'YES'结束,
但是得到的错误是
ORA-00932:不一致的数据类型:预期的数字得到字符
我通过从
'1'
和0中删除
引号破解了它,成功了