Wednesday, 15 May 2013

sql - Find start and end dates when one field changes -


मेरे पास यह डेटा तालिका में है

  FIELD_A FIELD_B FIELD_D 249052903 10/15/2011 एन 24 9 0 9 52 9 03 11/15/2011 पी ------------- मूल्य बदले 24 9 52 9 02 9 12/15/2011 पी 24 9 0 9 52 9 3 1/15/2012 एन ------------- VALUE बदले गए 249052903 2/15/2012 एन 249052903 3/15/2012 एन 249052903 4/15/2012 एन 249052903 5/15/2012 एन 249052903 6/15/2012 एन 249052903 7/15/2012 एन 249052903 8/15/2012 एन 24 9 0 9 52 9 3 9/15/15 एन   

जब भी फ़ील्ड FIELD_D में परिवर्तन होता है तो यह एक समूह बनाता है और मुझे उस समूह में न्यूनतम और अधिकतम तिथियां चाहिए क्वेरी शोड रिटर्न

  FIELD_A GROUP_START GROUP_END 24 9 0 9 0903 10/15/2011 10/15/2011 249052903 11/15/2011 12/15/2011 249052903 1/15/2012 9/15/2012   

मैंने जो उदाहरणों को देखा है, फ़ील्ड में डेटा अद्वितीय है I

किसी भी मदद की सराहना की जाएगी

धन्यवाद << p>

/ P>

आप विश्लेषणात्मक कार्यों का उपयोग कर सकते हैं - लैग, लीड, और COUNT () अपने लाभ के लिए, यदि वे हैं आपके एसक्यूएल कार्यान्वयन द्वारा समर्थित एसईसीएल बेलाल।

  साथ एंड्स मार्कड एएस (SELECT FIELD_A, FIELD_B, CASE WHEN FIELD_D = LAG (FIELD_D, 1) ओवर (ORDER BY FIELD_B) THEN 0 ELSE 1 END AS IS_START, केस जब FIELD_D = LEAD (FIELD_D, 1) पर (FIELD_B द्वारा आदेश) तब से 0 से 1 ईएसडी के रूप में टी), समूह संख्या के रूप में (SELECT FIELD_A, FIELD_B, IS_START, IS_END, COUNT (केस में WHEN IS_START = 1 THEN 1 END)) FIELD_B) एएस समूह समूह से अंत तक मार्क की गई WHERE IS_START = 1 या IS_END = 1) SELECT FIELD_A, MIN (FIELD_B) AS GROUP_START, MAX (FIELD_B) के रूप में GROUP_END GROUP_END समूहों से समूह संख्याबद्ध समूह द्वारा FIELD_A, GroupNum;    

No comments:

Post a Comment