2014-11-17 129 views
0

我写了一个SQL的情况下状态查询视图的MySQL,但我得到了错误:错误#1064在MySQL语法

#1064 - You have an error in your SQL syntax;error at AS `total_amount_paid`, at line 3 

以下是我的代码:

create or replace ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vw_customer_payment_status` AS select `p`.`customer_id` AS `customer_id`, 
concat(`l`.`first_name`,'',`l`.`last_name`) AS `customer_name`, 
sum(CASE WHEN l.lead_id = p.customer_id THEN`p`.`payment_amount`) AS `total_amount_paid`, 
sum(CASE WHEN l.lead_id = c.customer_id THEN `c`.`pending`) AS `total_amount_due`, 
(sum(`p`.`payment_amount`) - sum(`c`.`pending`)) AS `difference`, 
if(((sum(`p`.`payment_amount`) - sum(`c`.`pending`)) > 0),0,1) AS `status` 
from ((`tbl_leads` `l` join `tbl_customer_payments` `p`) 
join `tbl_customer_payment_schedule` `c` 
on((`l`.`lead_id` = `p`.`customer_id`))) 

回答

0

您需要添加END CASE到您的CASE语句。在右括号之前。

sum(CASE WHEN l.lead_id = p.customer_id THEN`p`.`payment_amount` END CASE) AS `total_amount_paid`, 
sum(CASE WHEN l.lead_id = c.customer_id THEN `c`.`pending` END CASE) AS `total_amount_due`, 
+0

现在我检查,但它没有奏效。 –

+0

你是什么意思,它没有工作?您可能需要在END CASE之前添加ELSE语句。像'ELSE 0 END CASE'一样,总和函数总是有总和。 – Robbert