विश्लेषणात्मक कार्यों में आपको विंडो रेंज निर्दिष्ट करने की आवश्यकता होती है। डिफ़ॉल्ट रूप से यह between unbounded preceding and current row
. है , जिसे मैं आत्म-व्याख्यात्मक मानता हूं।
मूल रूप से, ऐसा तब होता है जब आप partition by customer_id order by valid_from asc
निर्दिष्ट करते हैं :
- Oracle वर्तमान पंक्ति के
customer id
से मेल खाने वाली सभी पंक्तियों को लेता है - यह उन्हें
valid_from
. द्वारा आरोही क्रम में आदेश देता है - यह न्यूनतम
valid_from
. से शुरू होने वाली विंडो बनाता है दिनांक, और वर्तमान पंक्ति केvalid_from
. के साथ समाप्त होता है । - यह
last_value
का मूल्यांकन करता है , जो आपकी वर्तमान पंक्ति काvalid_from
. लौटाता है ।
आपको जो करने की ज़रूरत है वह एक चालू सीमा निर्दिष्ट करना है:
16:53:00 [email protected]> ed
Wrote file S:\spool\sandbox\BUFFER_SYSTEM_38.sql
1 select last_value(VALID_FROM) OVER (
2 partition by customer_id
3 ORDER BY VALID_FROM asc
4 range between current row and unbounded following
5 ) rn
6* from t
16:53:21 [email protected]> /
RN
---------------------------------------------------------------------------
04-DEC-13 11.07.01.000000 AM
04-DEC-13 11.07.01.000000 AM
04-DEC-13 11.07.01.000000 AM
Elapsed: 00:00:00.01