繁体   English   中英

在 Oracle 数据库中的 WHERE 子句中使用 CASE 时出错

[英]Error while using CASE in WHERE clause in Oracle Database

这是我的查询,当我运行它时,出现错误“缺少关键字”。 任何人都可以帮忙吗

SELECT COUNT(1)  
FROM ar_invoice_master,proposal,proposal_to_opportunity 
WHERE proposal.PROPOSAL_ID=proposal_to_opportunity.FK_PROPOSAL_ID 
AND proposal_to_opportunity.FK_AR_INVOICE_ID=ar_invoice_master.AR_INVOICE_ID 
AND  CASE 
        WHEN ar_invoice_master.FK_INVOICE_TYPE_CODE NOT IN ('REN','TRS') THEN ar_invoice_master.AR_INVOICE_OS_AMOUNT>0  
        WHEN ar_invoice_master.FK_INVOICE_TYPE_CODE  IN ('REN','TRS') THEN (AR_INVOICE_OS_AMOUNT/AR_INVOICE_TOTAL_AMOUNT * 100)<100
      END
AND proposal.FK_GLUSR_USR_ID=: glid

您可以使用AND..OR而不是CASE EXPRESSION

AND ((ar_invoice_master.FK_INVOICE_TYPE_CODE NOT IN ('REN','TRS')
      AND ar_invoice_master.AR_INVOICE_OS_AMOUNT>0)
  OR (ar_invoice_master.FK_INVOICE_TYPE_CODE  IN ('REN','TRS')
      AND (AR_INVOICE_OS_AMOUNT/AR_INVOICE_TOTAL_AMOUNT * 100)<100))
  

它不起作用的原因是CASE不是statement而是expression ,它不能返回条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM