मान लें कि एक अद्वितीय आईडी कॉलम है और चीजों को दिलचस्प बनाने के लिए यह टाइमस्टैम्प कॉलम में वृद्धि को ट्रैक नहीं करता है। यह भी मान लें कि कोई भी टाइमस्टैम्प समान नहीं है।
select pt.* from
(Select max(ptime) as prevtime,min(ntime) as nextime from
((Select timestamp as ptime) as prev,
(Select timestamp as ntime) as next
where prev.ptime < next.ntime and prev.id<>next.id) as s1 group by ptime, ntime) as pn
inner join
t as pt on pn.prevtime=pt.timestamp inner join
t as nt on pn.nexttime=nt.timestamp
where pt.ncol!=nt.ncol;
व्याख्या:s1 समय के जोड़े प्रदान करता है जो एक दूसरे से पहले और बाद में होते हैं। pn समय के सभी आसन्न युग्मों की सूची प्राप्त करने के लिए उन्हें समूहित करता है। pt पिछली बार pn में शेष कॉलम प्रदान करता है, और nt शेष कॉलम अगली बार प्रदान करता है। जब कॉलम जिसे मैंने एनसीओएल स्विच नाम दिया है, तो पूर्व पंक्ति परिणाम में थूक जाती है। यदि कई गैर-शून्य मान हैं और नल और गैर-शून्य के बीच स्विच ढूंढना केवल दिलचस्प था, तो pt.ncol!=nt.ncol को isnull(pt.ncol)!=isnull(nt.ncol) में बदलें।पी>