SELECT A.CustomerCode, A.PhoneNumber, B.StartTime
FROM tableA A INNER JOIN tableB B
ON A.PhoneNumber = B.PhoneNumber AND A.CustomerCode = B.CustomerCode
WHERE B.StartTime = (SELECT MIN(StartTime) FROM B
WHERE PhoneNumber = A.PhoneNumber
AND CustomerCode = A.CustomerCode)
ORDER BY A.CustomerCode, A.CLI, B.StartTime DESC
Я полагаю, что это даст желаемый результат, при условии, что B.StartTime имеет значение уникальное в наборе, связанном с каждой строкой таблицы A. Если вы имеете дело с DateTime и событиями, не слишком близкими, это должно быть надежно.
Единственный известный мне способ - использовать CROSS APPLY в MSSQL 2005 +