नीचे दिए गए प्रयास करें।
मैंने जो किया है वह वर्चुअल टेबल बनाया गया है, जिसमें अद्वितीय महीने हैं। जिसमें उस महीने के लिए 3 टेबलों में से एक में जानकारी है। फिर रकम उस महीने के लिए बाध्य होती है।
मैंने ORDER BY
. भी हटा दिया है SUM
. में खंड, क्योंकि वे परिणाम नहीं बदलते हैं। आपका IFNULL
आप इसे कैसे काम करने की उम्मीद करते हैं, इसके आधार पर इसे बदला भी जा सकता है।
यह विधि आपको प्रत्येक 3 फ़ील्ड (9 एसयूएम) के लिए 3 लॉट एसयूएम लिखने से बचाती है। यदि कोई त्रुटि है, तो कृपया तदनुसार ठीक करें।
ध्यान दें कि month
कुछ एसक्यूएल में एक कीवर्ड है। इसलिए आदर्श रूप से, एक बेहतर कॉलम नाम का उपयोग किया जाना चाहिए।
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