यह एक पूर्ण उत्तर नहीं है, लेकिन मैं टिप्पणियों में बहुत सारे प्रश्न नहीं लिखना चाहता।
आपका मुख्य लक्ष्य लोगों को जानकारी भेजना है, और उस स्थिति से बचना है जब एक व्यक्ति को दो बार फैक्स प्राप्त होता है। तो आपको सबसे पहले अद्वितीय प्राप्तकर्ताओं की एक सूची चाहिए, जैसे:
select distinct otherid
from NR_PVO_120
अगर एक व्यक्ति के पास दो फ़ैक्स नंबर हैं, तो आपको तय करना होगा कि किसे चुनना है:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by <choosing rule>) rn
from NR_PVO_120)
where rn = 1
(यह सब आपके पास पिछले प्रश्न के उत्तर में है)
यदि आप फ़ैक्स नंबरों की इस सूची को लेते हैं, तो आपके सभी प्राप्तकर्ताओं को फ़ैक्स प्राप्त होता है, और प्रत्येक व्यक्ति के लिए केवल एक फ़ैक्स। लेकिन कुछ फैक्स नंबरों का उपयोग नहीं किया जाएगा। आप उन्हें आसानी से ढूंढ सकते हैं:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by <choosing rule>) rn
from NR_PVO_120)
where rn > 1
यदि आप इनमें से किसी भी नंबर पर फैक्स भेजते हैं, तो कुछ लोगों को एक बार दो बार फैक्स मिलता है। जैसा कि मैं आपके प्रश्न में देख सकता हूं, संभवतः आपको अपने प्रश्न में फैक्स नंबरों के क्रम को संख्या प्राथमिकता के रूप में उपयोग करने की आवश्यकता है (उच्च संख्या तालिका में स्थित है - इसका उपयोग करने की उच्च संभावना)। ऐसा लगता है कि आप निम्न का उपयोग कर सकते हैं:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by row) rn
from NR_PVO_120)
where rn = 1
यहां row
order by
क्लॉज एक row
है आपकी उदाहरण तालिका से।
यूपीडी
पी. एस। मेरी आखिरी क्वेरी के बारे में:हमारे पास निश्चित ऑर्डर वाली एक टेबल है, और ऑर्डर महत्वपूर्ण है। हम टेबल लाइन की पंक्तियों को लाइन से लेते हैं। पहली पंक्ति लें और उसका otherid
डालें और fax
परिणाम तालिका के लिए। फिर अगली पंक्ति लें। अगर इसमें एक और fax
शामिल है संख्या और otherid
, हम इसे लेते हैं, अगर otherid
पहले से ही हमारे परिणाम तालिका में, हम इसे छोड़ देते हैं। क्या आपने यह एल्गोरिथम पूछा था?