आपकी मूल क्वेरी को तदनुसार संशोधित किया गया है:
select
tt1.id,
tt1.amount,
tt1.AccountId,
(tt1.amount-ifnull(tt2.amount, 0)) as delta
from trans tt1
left outer JOIN trans tt2 on tt1.accountid = tt2.accountid
and month(tt1.date1)-month(tt2.date1)=1;
महीने की तुलना को where
. से स्थानांतरित किया गया है करने के लिए on
, जो left join
के लिए एक फर्क पड़ता है , और tt2.amount
ifnull(tt2.amount, 0)
. से बदल दिया गया है ।
UPDATE
स्क्रिप्ट का संस्करण:
update tt1
set delta = (tt1.amount-ifnull(tt2.amount, 0))
from trans tt1
left outer JOIN trans tt2 on tt1.accountid = tt2.accountid
and month(tt1.date1)-month(tt2.date1)=1;
उपरोक्त अद्यतन के लिए सही MySQL सिंटैक्स वास्तव में होना चाहिए:
update trans tt1
left outer JOIN trans tt2
on tt1.accountid = tt2.accountid
and month(tt1.date1)-month(tt2.date1)=1
set tt1.delta = (tt1.amount-ifnull(tt2.amount, 0));
(धन्यवाद @pinkb ।)