2013-10-28 30 views

回答

0
SELECT t1.bill_date as `date`, t1.Total as Credit, t2.amount as debit FROM Bills t1 
LEFT JOIN Payments t2 ON t1.bill_date= t2.Paid_on 
UNION 
SELECT t2.Paid_on as `date`, t1.Total as Credit, t2.amount as debit FROM Bills t1 
Right JOIN Payments t2 ON t1.bill_date <> t2.Paid_on 
UNION 
SELECT t1.bill_date as `date`, t1.Total as Credit, t2.amount as debit FROM Bills t1 
LEFT JOIN Payments t2 ON t1.bill_date <> t2.Paid_on 
-2

你可以試試這個代碼。

SELECT concat(`Bill_date`,' ',`Total`) FROM `tblname` 
1
select b.bill_date, sum(b.total), sum(p.amount) 
from bills b full outer join payments p on b.bill_date=p.paid_on 
group by b.bill_date 
order by b.bill_date 

您需要完整的外部聯接來獲得行具有票據天,但沒有支付和天有付款,但沒有票據。

+0

注意,你不會得到沒有賬單,沒有支付行。 –

+1

正確,那不是要求中的任何地方。如果即使沒有賬單並且沒有付款,每天也需要一行,那麼需要一個日曆表來提供要報告的日期。 –

+0

使用給定的樣本數據,該查詢將僅返回日期「28/10/13」的數據。它不會返回任何其他日期的任何信用卡或借記卡數據 – Prabhuram

1

試試這個

SELECT t1.bill_date, t1.total as Credit, t2.total as debit FROM Bills t1 
LEFT JOIN Payments t2 ON t1.bill_date= t2.bill_date 
UNION 
SELECT t2.bill_date, t1.total as Credit, t2.total as debit FROM Bills t1 
RIGHT JOIN Payments t2 ON t1.bill_date= t2.bill_date 
0

查詢應該是這樣的,

SELECT t1.bill_date, t1.total AS Credit, t2.amount AS debit 
FROM Bills t1 
LEFT JOIN Payments t2 ON t1.bill_date = t2.paid_on 
UNION 
SELECT t2.paid_on, t1.total AS Credit, t2.amount AS debit 
FROM Bills t1 
RIGHT JOIN Payments t2 ON t1.bill_date = t2.paid_on