sql server - Values differences between days -
मेरे पास "यात्रा" नामक एक SQL सर्वर 2005 तालिका है:
+ - -------------- + | यात्रा | + --------------- + | जर्नीआईडी | | प्लेटनम्बर | | प्रस्थान का दिनांक | | प्रस्थानकएम | | आगमन दिनांक | | आगमन किमी | + --------------- + तालिका में निम्नलिखित नमूना डेटा है:
+ --- --------- + -------------- + ---------------- + -------- ------ + -------------- + ----------- + | डाकिया | PLATENUMBER | DEPARTUREDATE | DEPARTUREKM | ARRIVALDATE | ARRIVALKM | + ------------ + -------------- + ---------------- + ---- ---------- + -------------- + ----------- + | 1 | एबीसी -123 | 01-01-2015 | 10000 | 01-02-2015 | 10200 | | 2 | एबीसी -123 | 01-02-2015 | 10210 | 01-03-2015 | 10500 | | 3 | एबीसी -123 | 01-03-2015 | 10500 | 01-04-2015 | 10650 | | 4 | एबीसी -123 | 01-04-2015 | 10607 | 01-05-2015 | 10900 | | 5 | एक्सवाईजेड -999 | 01-15-2015 | 30200 | 01-16-2015 | 30400 | | 6 | एक्सवाईजेड -999 | 01-16-2015 | 30405 | 01-17-2015 | 30600 | | 7 | एक्सवाईजेड -999 | 01-17-2015 | 30600 | 01-18-2015 | 30750 | | 8 | एक्सवाईजेड -999 | 01-18-2015 | 30752 | 01-19-2015 | 30 9 20 | + ------------ + -------------- + ---------------- + ---- ---------- + -------------- + ----------- + मैं एक क्वेरी उत्पन्न करना चाहते हैं जो कि 'केएमडीफ़फ़्रन्मेंट' नामक एक अतिरिक्त कॉलम के साथ निम्नलिखित परिणाम देता है जो कि आखिरी दिन से 'आगमनकैम' और आज से 'डिपार्सयूकेएम' में अंतर है।
वांछित परिणाम:
<पूर्व> + ------------- + --------------- + ------------ - + ------------- + ----------- + -------------- + | | प्लेटनम्बर | प्रस्थान का दिनांक | प्रस्थानकएम | आगमन दिनांक | आगमन किमी | केएमडीफ़फ़ेरेंस | + ------------- + --------------- + ------------- + ----- -------- + ----------- + -------------- + | एबीसी -123 | 01-01-2015 | 10000 | 01-02-2015 | 10200 | 0 | | एबीसी -123 | 01-02-2015 | 10210 | 01-03-2015 | 10500 | 10 | | एबीसी -123 | 01-03-2015 | 10500 | 01-04-2015 | 10650 | 0 | | एबीसी -123 | 01-04-2015 | 10607 | 01-05-2015 | 10900 | 7 | | एक्सवाईजेड -999 | 01-15-2015 | 30200 | 01-16-2015 | 30400 | 0 | | एक्सवाईजेड -999 | 01-16-2015 | 30405 | 01-17-2015 | 30600 | 5 | | एक्सवाईजेड -999 | 01-17-2015 | 30600 | 01-18-2015 | 30750 | 0 | | एक्सवाईजेड -999 | 01-18-2015 | 30752 | 01-19-2015 | 30 9 20 | 2 | + ------------- + --------------- + ------------- + ----- -------- + ----------- + -------------- + इस एसक्यूएल देखें यहाँ बेला:
आप निम्न CTE आधारित क्वेरी का उपयोग करने के लिए उपयोग कर सकते हैं एसक्यूएल सर्वर 2012 के बाद से उपलब्ध एलएजी फ़ंक्शन:
; के साथ यात्रा का रास्ता (चयन करें JourneyID, प्लेट नंबर, प्रस्थान डिपार्ट, डिपार्टमेंट केएम, आगमन तिथि, आगमन किमी, ROW_NUMBER () ओवर ( प्लेटिन नंबर द्वारा विभागीय विभाग द्वारा प्रस्थान) यात्रा के समय से) चयन करें j1.PlateNumber, j1.डिपरेट डेट, जे 1। डिपार्टमेंट किएम, जे 1। आगमन की तारीख, जे 1। आगमन के एम, जे 1। डिपार्टमेंट केएम - आईएसएनएलएल (जे 2। आगमन के एम, जे 1। डीपारेंट केएम) के.एम. जर्नीस_आरएन एएस जे 1 लेफ्ट जॉइन जर्नीस_आरएन एएस जे 2 ऑन जे 1.आरएन = जे 2.आरएन + 1 और जे 1.प्लेटनम्बर = जे 2.प्लेटनम्बर जे 2। आगमन किम उपर्युक्त क्वेरी पिछले रिकॉर्ड से मूल्य है ISNULL की आवश्यकता है ताकि प्रत्येक समूह के पहले रिकॉर्ड के लिए 0 मान की गणना की जाती है
पी.एस. ओपी में नमूना डेटा ओपी में उपलब्ध एसईसीएल बेडल स्रोत के नमूना डेटा से मेल नहीं खाता। तो वांछित रील्ट सेट प्राप्त करने के लिए इसे ठीक करना पड़ा।
Comments
Post a Comment