मैंने जो पढ़ा है उससे मुझे लगता है कि आप उन सभी कंपनियों को चाहते हैं जिनकी आपकी तिथि सीमा के अंदर स्थिति 1 थी। अगर आप यही चाहते हैं, तो यह बहुत आसान है।
निम्नलिखित कथन को काम करना चाहिए:
SELECT C.*
FROM COMPANY C
LEFT JOIN ( SELECT H.STATUS, H.COMPANY_ID
FROM COMPANYSTATUS H
WHERE H.STATUS_EFFECTIVE_DATE = (SELECT MAX(H1.STATUS_EFFECTIVE_DATE)
FROM COMPANYSTATUS H1
WHERE H1.COMPANY_ID = H.COMPANY_ID
AND H1.STATUS_EFFECTIVE_DATE <= '20171231'
) CH ON CH.COMPANY_ID = C.ID
WHERE ( C.STATUS = 1 AND CH.COMPANY_ID IS NULL ) -- CASE #1 : STATUS = 1 AND NEVER CHANGED (NO HISTORY)
OR H.STATUS = 1
मैंने जो किया वह आपकी तिथि सीमा के अंत तक अंतिम स्थिति के साथ एक नेस्टेड दृश्य बनाने के लिए था, इसलिए यदि कंपनी की स्थिति का अंतिम परिवर्तन 1 है तो इस कंपनी को आपके परिणाम में शामिल किया जाना चाहिए। हम आपकी तिथि सीमा के बाद परिवर्तनों की परवाह नहीं करते हैं, इसलिए मैंने प्रतिबंध को नेस्टेड दृश्य के अंदर रखा है।
इस अनुरोध के लिए आपकी सीमा की शुरुआत महत्वहीन है। आपको शायद अन्य उद्देश्यों के लिए, अन्य तालिकाओं में शामिल होने की आवश्यकता है।
मैं Oracle आदमी हूं, इसलिए मुझे लगता है कि Ι Oracle विश्लेषण का उपयोग करके इस कथन को बहुत बेहतर बना सकता है, लेकिन मुझे लगता है कि यह SQL सर्वर के लिए एक मान्य कथन होगा।