[英]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.