我想获得客户已为每张账单支付的分期付款数量,以及他们应支付多少分期付款,或者他们支付了部分分期付款,或者他们没有支付。我尝试了这段代码,但是我无法得到真正的结果,要么我得到了付款的分期付款或错误的付费分期付款。
SELECT
sb.op_id ,
sb.auto_bill_no as sales_bill_no ,
sb.installmnts_cont ,
sb.installmnts_cont - COUNT(cupa.installment_no) as installmnts_net ,
sb.bill_total
FROM sale_bill as sb
LEFT OUTER JOIN custmrs_paymnts as cupa ON
sb.installmnt = 1 AND
sb.installmnt_completed = 0 --AND sb.op_id = cupa.sales_bill_no
WHERE cupa.installment = 1
AND sb.custmr_id = @cstmr_no
AND cupa.custmr_id = @cstmr_no
group by sb.op_id , sb.auto_bill_no , sb.installmnts_cont , sb.bill_total
来自sale_bill表的示例数据:
op_id auto_bill_no installmnts_cont installmnt_completed bill_total
---------------------------------------------------------------------------
55 10 2 true 6000
56 11 2 false 4000
来自custmrs_paymnts表的示例数据:
money_amt installment sales_bill_no installment_no
-----------------------------------------------------------------
3000 true 55 1
3000 true 55 2
期望的结果是:
sales_bill_no installmnts_cont installmnts_net bill_total
---------------------------------------------------------------------
55 2 0 6000
56 2 2 4000
答案 0 :(得分:0)
我确实发现您的加入条件存在问题。就像那里真的没有。我不确定这是否能解决您的问题,但值得一试:
SELECT . . .
FROM sale_bill sb LEFT OUTER JOIN
custmrs_paymnts cupa
ON sb.custmr_id = cupa.custmr_id AND
cupa.installment = 1
WHERE sb.custmr_id = @cstmr_no AND
sb.installmnt = 1 AND
sb.installmnt_completed = 0
一些规则:
ON
子句中的表中的列上连接。LEFT JOIN
的第一个表格中的条件应该放在WHERE
。LEFT JOIN
的第二个表格中的条件应该放在ON
。