Опитайте по-долу.
Това, което направих, е да създам виртуална таблица, съдържаща уникални месеци. За което има информация в една от 3-те таблици за този месец. Тогава сумите са обвързани с този месец.
Премахнах и ORDER BY
в SUM
клаузи, тъй като те не променят резултата. Вашият IFNULL
може също да се промени, в зависимост от това как очаквате да работи.
Този метод ви спестява изписването на 3 партиди SUM за всеки 3 полета (9 SUM). Ако има някакви правописни грешки, моля, коригирайте съответно.
ЗАБЕЛЕЖЕТЕ, че month
е ключова дума в някои SQL. Така че в идеалния случай трябва да се използва по-добро име на колона.
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