Dari apa yang saya baca, saya berasumsi bahwa Anda menginginkan semua perusahaan yang memiliki status 1 di dalam rentang tanggal Anda. Jika ini yang Anda inginkan, itu cukup mudah.
Pernyataan berikut harus melakukan pekerjaan:
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
Apa yang saya lakukan adalah membuat tampilan bersarang dengan status terakhir hingga akhir rentang tanggal Anda, jadi jika perubahan terakhir dari status perusahaan adalah 1 maka perusahaan ini harus disertakan dalam hasil Anda. Kami tidak peduli dengan perubahan setelah rentang tanggal Anda, jadi saya menempatkan batasan di dalam tampilan bertingkat.
Awal rentang Anda tidak signifikan untuk permintaan ini. Anda mungkin perlu untuk tujuan lain, untuk bergabung dengan tabel lain.
Saya orang Oracle, jadi saya pikir bisa membuat pernyataan ini jauh lebih baik menggunakan analitik Oracle, tapi saya pikir itu akan menjadi pernyataan yang valid untuk SQL server.