Z tego, co przeczytałem, zakładam, że chcesz, aby wszystkie firmy, które miały status 1, mieściły się w Twoim zakresie dat. Jeśli tego chcesz, to całkiem proste.
Poniższe stwierdzenie powinno załatwić sprawę :
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
To, co zrobiłem, to utworzenie zagnieżdżonego widoku z ostatnim statusem do końca zakresu dat, więc jeśli ostatnia zmiana statusu firmy to 1, to ta firma powinna zostać uwzględniona w wyniku. Nie interesują nas zmiany po Twoim zakresie dat, więc umieszczam ograniczenie w widoku zagnieżdżonym.
Początek twojego zakresu jest nieistotny dla tej prośby. Prawdopodobnie potrzebowałeś do innych celów, aby dołączyć do innych stołów.
Jestem gościem od Oracle, więc myślę, że Ι mógłby uczynić to stwierdzenie znacznie lepszym, używając analityki Oracle, ale myślę, że będzie to prawidłowe stwierdzenie dla serwera SQL.