मान लें कि हम केवल start_date
. का उपयोग कर सकते हैं आसन्न रिकॉर्ड की पहचान करने के लिए (यानी, कोई अंतराल नहीं हैं), तो आप पंक्ति संख्या दृष्टिकोण के अंतर का उपयोग कर सकते हैं:
select id, min(start_date) as mn_date, max(end_date) as mx_date, rate
from (select t.*,
row_number() over (partition by id order by start_date) as seqnum_i,
row_number() over (partition by id, rate order by start_date) as seqnum_ir
from t
) t
group by id (seqnum_i - seqnum_ir), rate;
यह कैसे काम करता है यह देखने के लिए, सबक्वेरी के परिणाम देखें। आपको "देखने" में सक्षम होना चाहिए कि कैसे दो पंक्ति संख्याओं का अंतर समान दर के साथ आसन्न रिकॉर्ड के समूहों को परिभाषित करता है।