मैं मेज एक और टेबल बी शामिल होने के लिए आईडी के लिए तालिका सीअतिव्यापी शामिल होने की तिथि पर्वतमाला
तालिका A और टेबल बी दुकान स्थिति झंडे बनाना होगा। स्थिति झंडे (ए_फ्लैग और बी_फ्लैग) समय-समय पर बदल सकते हैं, इसलिए एक आईडी में कई पंक्तियां हो सकती हैं, जो आईडी की स्थिति के इतिहास का प्रतिनिधित्व करती हैं। किसी विशेष आईडी के लिए झंडे एक-दूसरे से स्वतंत्र रूप से बदल सकते हैं, जिसके परिणामस्वरूप तालिका ए में एक पंक्ति में तालिका बी में कई पंक्तियों से संबंधित हो सकता है, और इसके विपरीत।
परिणामी तालिका (तालिका सी) को आईडी दिनांक (01/01/2008-18/08/2008) के भीतर प्रत्येक तिथि को कवर करने वाली अद्वितीय तिथि सीमाओं की सूची होना चाहिए, और प्रत्येक दिनांक सीमा के लिए ए_फ्लैग और बी_फ्लैग मान ।
वास्तविक सारणी में प्रत्येक आईडी के साथ सैकड़ों आईडी होती हैं जिसमें प्रति तालिका पंक्तियों की एक अलग संख्या होती है।
मेरे पास अंतिम परिणाम प्राप्त करने के लिए SQL और SAS टूल तक पहुंच है।
Source - Table A
ID Start End A_Flag
1 01/01/2008 23/03/2008 1
1 23/03/2008 15/06/2008 0
1 15/06/2008 18/08/2008 1
Source - Table B
ID Start End B_Flag
1 19/01/2008 17/02/2008 1
1 17/02/2008 15/06/2008 0
1 15/06/2008 18/08/2008 1
Result - Table C
ID Start End A_Flag B_Flag
1 01/01/2008 19/01/2008 1 0
1 19/01/2008 17/02/2008 1 1
1 17/02/2008 23/03/2008 1 0
1 23/03/2008 15/06/2008 0 0
1 15/06/2008 18/08/2008 1 1
मैं इसे केवल मानक एसक्यूएल के साथ पूरा करने के तरीके के बारे में नहीं सोच सकता और मुझे एसएएस नहीं पता है। अगर मुझे पता चले कि कौन सा स्वाद है, तो मुझे एक ऐसी प्रक्रिया लिखने में सक्षम होना चाहिए जो काम करेगा। – pahoughton
कई उत्तरों के पास सही समाधान है और जैसा कि मैंने पहले उपयोग किया था वैसा ही है: आपको उन सभी तिथियों को निर्धारित करने की आवश्यकता है जिन पर कुछ होता है और इनमें से इन तिथियों के बीच सभी श्रेणियां निर्धारित करती हैं। फिर उस विशेष दिनांक सीमा के लिए मान्य विशेषताओं को निर्धारित करने के लिए श्रेणियों के इस पूर्ण सेट से वापस अपनी मूल सारणी में शामिल हों। इसके लिए आपको एक एलएजी फ़ंक्शन की आवश्यकता नहीं है, लेकिन एक सामान्य तालिका अभिव्यक्ति (खंड के साथ) यहां बहुत आसान है। –