以下查询必须返回所有客户信息,但不幸的是子查询返回多行错误:

SET @total=0;    
SET @amountDue=0;
SELECT c.customer_name, 
        l.paid_date, 
        IF(@total=0,((SELECT ll.total_amount    
                    FROM payment_loan ll 
                    join payments_details le on ll.loan_id=le.loan_id)-        
                    (SELECT ll.installment_amount_month 
                    FROM payment_loan ll 
                    join payments_details le on ll.loan_id=le.loan_id)*
                    (SELECT ll.total_installments        
                    FROM payment_loan ll 
                    join payments_details le on ll.loan_id=le.loan_id)),
                    (SELECT ll.installment_amount_month 
                    FROM payment_loan ll 
                    join payments_details le on ll.loan_id=le.loan_id)) AS AmountDue,
        @amountDue:=@amountDue+(SELECT IF(@total=0,((SELECT ll.total_amount 
                                                    FROM payment_loan ll 
                                                    join payments_details le on ll.loan_id=le.loan_id)-
                                                    (SELECT ll.installment_amount_month 
                                                    FROM payment_loan ll 
                                                    join payments_details le on ll.loan_id=le.loan_id)*
                                                    (SELECT ll.total_installments 
                                                    FROM payment_loan ll 
                                                    join payments_details le on ll.loan_id=le.loan_id)),
                                                    (SELECT ll.installment_amount_month 
                                                    FROM payment_loan ll 
                                                    join payments_details le on ll.loan_id=le.loan_id)) )as ComulativeDue, 
        l.amount AS AmountPaid, 
        @total := @total +l.amount AS comulativePaid,
        (@total/@amountDue ) as percentage 
FROM payments_details l 
join customer c on c.customer_id= l.customer_id 
where c.customer_id=l.customer_id 
GROUP BY l.paid_date 
ORDER BY l.paid_date 
DESC LIMIT 1 ;