-- preparing mock tables
DROP TABLE IF EXISTS #Table1
DROP TABLE IF EXISTS #Table2
CREATE TABLE #Table1 ( EmailName VARCHAR(50), SentDateTime DATETIME)
CREATE TABLE #Table2 ( EmailName VARCHAR(50), EventType VARCHAR(20), EventDateTime DATETIME)
INSERT INTO #TABLE1
SELECT 'Checkout', '2020-01-01 12:48' UNION
SELECT 'Checkout', '2020-01-15 06:21' UNION
SELECT 'Checkout', '2020-01-16 09:23'
INSERT INTO #TABLE2
SELECT 'Checkout', 'Open', '2020-01-02 13:29' UNION
SELECT 'Checkout', 'Open', '2020-01-11 12:49' UNION
SELECT 'Checkout', 'Open', '2020-01-03 14:30' UNION
SELECT 'Checkout', 'Click', '2020-01-11 12:51' UNION
SELECT 'Checkout', 'Open', '2020-01-16 07:30' UNION
SELECT 'Checkout', 'Open', '2020-01-16 10:00'
-- query you care about
SELECT *
FROM #Table2 B
OUTER APPLY
(
SELECT TOP 1 *
FROM #Table1
WHERE SentDateTime < EventDateTime
ORDER BY SentDateTime DESC
) a
ORDER BY SentDateTime, EventDateTime