2016-04-21 51 views
0

对于我的一列查询,我想要一个CASE语句。CASE不在oracle中工作

的情况是

如果我的列名ltt.f_complete task_completed0则该值SHD是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 

好心建议什么是错的

UPDATE

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 

回答

2

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

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

现在收到错误为'ORA-00923:FROM关键字未找到其中expected' – BNN

+0

@coder更新您原来的问题,以反映你是从获得新的错误实际查询。 –

+0

那么你应该在'END'之后加''',我想。你能更新你的查询吗? –