I have two tables.
| EVENT_NARATIVE | 
|---|
| EventNum | 
| SEQ | 
| Message | 
| Message_Time | 
| GRADE_HISTORY | 
|---|
| EventNum | 
| Grade | 
| GradeChangeTime | 
The EVENT_NARATIVE Table has a lot of data (millions of rows) and each Event (EventNum) can have multiple EVENT_NARATIVE records.
The GRADE_HISTORY table contains thousands of rows and each EVENT can have multiple Grade changes.
In the EVENT_NARATIVE Table I need to find all records where the MESSAGE LIKE 'CODE set to%' There is only one MESSAGE that meets this criteria for each EVENT.
Once I have those records I need to find the first GRADE from the GRADE_HISTORY table that occurs after the Message_Time.
The result should look like
EventNum, Message, Message_Time, Grade, GradeChangeTime
My SQL looks like this but I know it doesn't work
SELECT 
N.EventNum, N.SEQ, N.MESSAGE_TIME, N.MESSAGE,
G.CHANGE_DATE, G.GRADE
FROM 
    (SELECT EventNum, SEQ, MESSAGE_TIME, MESSAGE 
     FROM  EVENT_NARRATIVE 
     Where MESSAGE LIKE 'CODE set to%' ) N
Left JOIN   (SELECT Top 1 
             Event_Num, CHANGE_DATE, GRADE
             FROM  GRADE_HISTORY) G
ON G.Event_Num = N.Event_Num
AND G.CHANGE_DATE >= N.MESSAGE_TIME
SQL is not my day job so any help is appreciated to get the result I need.
SAMPLE DATA EVENT_NARATIVE
*EventNum         SEQ        MESSAGE_TIME                  MESSAGE*
000001-01012021   20770236   2021-01-01 00:03:36.0000000   CODE set to 6D02
000001-01022020   8339846    2020-02-01 00:06:14.0000000   CODE set to 17B01
000001-01022021   22038639   2021-02-01 00:04:44.0000000   CODE set to 17A02
SAMPLE DATA GRADE_HISTORY
*EventNum         CHANGE_DATE                       GRADE*
000001-01012021   2021-01-01 00:03:15.0000000       2
000001-01012021   2021-01-01 00:03:37.0000000       3
000001-01012021   2021-01-01 00:03:40.0000000       5
000001-01022020   2020-02-01 00:06:10.0000000       2
000001-01022020   2020-02-01 00:06:15.0000000       2
000001-01022020   2020-02-01 00:06:18.0000000       5
000001-01022020   2020-02-01 00:06:20.0000000       5
000001-01022021   2021-02-01 00:04:40.0000000       2
000001-01022021   2021-02-01 00:04:42.0000000       3
000001-01022021   2021-02-01 00:04:44.0000000       0
000001-01022021   2021-02-01 00:04:54.0000000       5
Expected Result
*EventNum         SEQ        CHANGE_DATE                        GRADE*
000001-01012021   20770236   2021-01-01 00:03:37.0000000        3  
000001-01022020   8339846    2020-02-01 00:06:15.0000000        2
000001-01022021   22038639   22021-02-01 00:04:44.0000000       0
 
     
    