Hi @Riyn Pratama ,
Welcome to the microsoft TSQL Q&A forum!
Please check:
CREATE TABLE #KDSCMSCNTRCTD(CNTRCTDID INT,CNTRCTDCOMP VARCHAR(15),CNTRCTDLNUM INT)
INSERT INTO #KDSCMSCNTRCTD VALUES(3221,'NAV',207)
CREATE TABLE #KDSCMSCNTRCTDHIST( CNTRCTDHISTID INT,CNTRCTDHISTSDATE DATE,CNTRCTDHISTCOMP VARCHAR(15),
CNTRCTDHISTLNUM INT,CNTRCTDHISTASSCODE VARCHAR(15))
INSERT INTO #KDSCMSCNTRCTDHIST VALUES(65,'17-NOV-21','NAV', 207,'00091'),
(66,'20-NOV-21','NAV',207,'123')
SELECT * FROM #KDSCMSCNTRCTD
SELECT * FROM #KDSCMSCNTRCTDHIST
;with cte
as(select *,max(CNTRCTDHISTSDATE) over(partition by CNTRCTDID) mm
from #KDSCMSCNTRCTD k
left join #KDSCMSCNTRCTDHIST
ON CNTRCTDHISTLNUM = CNTRCTDLNUM
where CNTRCTDLNUM =CNTRCTDHISTLNUM and CNTRCTDCOMP =CNTRCTDHISTCOMP)
select CNTRCTDID,CNTRCTDCOMP,CNTRCTDLNUM,CNTRCTDHISTASSCODE
from cte
where CNTRCTDHISTSDATE=mm
Or:
select CNTRCTDID,CNTRCTDCOMP,CNTRCTDLNUM,CNTRCTDHISTASSCODE
from #KDSCMSCNTRCTD k
left join (SELECT *,max(CNTRCTDHISTSDATE) over(order by CNTRCTDHISTCOMP) mm
FROM #KDSCMSCNTRCTDHIST) t
ON CNTRCTDHISTLNUM = CNTRCTDLNUM and CNTRCTDLNUM =CNTRCTDHISTLNUM
and CNTRCTDCOMP =CNTRCTDHISTCOMP
where CNTRCTDHISTSDATE=mm
Output:
If you have any question, please feel free to let me know.
If the response is helpful, please click "Accept Answer" and upvote it.
Regards,
Echo
If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.