2014-05-10 110 views
-1

而执行这个查询,我得到错误'ORA-00905: missing keyword',误差的情况下,statement..Please找到一个解决方案 请在下面找到“ORA-00905:缺少关键字”

SELECT Count(*) 
FROM c_bpartner 



WHERE c_bpartner.issummary = 'N' 
     AND c_bpartner.isactive = 'Y' 
     AND c_bpartner.isactive = 'Y' 
     AND c_bpartner.issummary = 'N' 
     AND (CASE 
       WHEN 135 NOT IN (SELECT c_doctype_id 
           FROM c_doctype 
           WHERE docsubtypeso IN('OB', 'ON')) THEN 
       c_bpartner.isprospect = 'N' 
       ELSE c_bpartner.isprospect = 'Y' 
        OR c_bpartner.isprospect = 'N' 
      END) 
     AND c_bpartner.iscustomer = 'Y' 
     AND c_bpartner.isprospect = 'N' 
+2

我为您清理了您的问题,下次将您的代码包装在代码标记中并在发布之前美化您的SQL,谢谢。 –

回答

2

查询,我相信这个问题与WHERE条款中的CASE声明一致。您正尝试应用可选过滤器,但CASE不允许您对查询应用动态更改。相反,使用CASE来投影可以在谓词中使用的行特定值,例如,假设“Y”和“N”是isprospect唯一的可能性,尝试重写的情况下,像这样:

AND c_bpartner.isprospect = 
(CASE 
    WHEN 135 NOT IN (SELECT c_doctype_id 
        FROM c_doctype 
        WHERE docsubtypeso IN('OB', 'ON')) 
    THEN 
     'N' 
    ELSE 
     c_bpartner.isprospect 
    END 
) 

ELSE返回c_bpartner.isprospect应保证匹配。