От това, което прочетох, предполагам, че искате всички компании, които са имали статус 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 analytics, но мисля, че ще бъде валидно твърдение за SQL сървър.