Hãy thử cách bên dưới.
Những gì tôi đã làm là tạo một bảng ảo, chứa các tháng duy nhất. Trong đó có thông tin ở một trong 3 bảng của tháng đó. Sau đó, tổng số tiền được ràng buộc với tháng đó.
Tôi cũng đã xóa ORDER BY
trong SUM
mệnh đề, vì chúng không thay đổi kết quả. IFNULL
của bạn cũng có thể được thay đổi, tùy thuộc vào cách bạn mong đợi nó hoạt động.
Phương pháp này giúp bạn viết ra 3 SUM cho mỗi 3 trường (9 SUM). Nếu có bất kỳ lỗi chính tả nào, vui lòng sửa chữa cho phù hợp.
LƯU Ý rằng month
là một từ khóa, trong một số SQL. Vì vậy, lý tưởng nhất là nên sử dụng tên cột tốt hơn.
SELECT month,
(SELECT IFNULL (SUM(FTL.tradebalanceamount),0 )
FROM farmertradelabel as FTL
WHERE FTL.mobileno = '9486032141' AND strftime('%m-%Y', FTL.tradedate) = month) AS tradeamount,
(SELECT IFNULL (SUM(advanceamount),0)
FROM advancelabel
WHERE advancelabel.mobileno = '9486032141' AND strftime('%m-%Y', advancelabel.advancedate) = month) AS advanceamount,
(SELECT IFNULL (SUM(loantotalamount),0)
FROM loanlabel
WHERE loanlabel.mobileno = '9486032141' AND strftime('%m-%Y', loanlabel.loandate) = month) AS loanamount
FROM
(SELECT strftime('%m-%Y', tradedate) as 'month' FROM farmertradelabel
UNION
SELECT strftime('%m-%Y', advancedate) as 'month' FROM advancelabel
UNION
SELECT strftime('%m-%Y', loandate) as 'month' FROM loanlabel
) as dateTable