Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

sql . में डेल्टा (वर्तमान और पिछली पंक्ति का अंतर) की गणना करें

आपकी मूल क्वेरी को तदनुसार संशोधित किया गया है:

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 ।)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैसकल/पीएचपी - वर्तमान तिथि और समय

  2. एकाधिक टेबल और कॉलम के लिए विदेशी कुंजी?

  3. 1970 से पहले की तारीखों के लिए स्ट्रेटोटाइम का उपयोग करना

  4. कस्टम php फ़ोरम - नई/अपठित पोस्ट दिखा रहा है

  5. C++ शब्द का चयन करने के लिए आप अपनी फुलटेक्स्ट बूलियन खोज कैसे प्राप्त करते हैं?