Попробуйте это:
SELECT t.Order
,CONVERT(NVARCHAR,temp.[DateTime],101) AS [DateTime]
,t.Status
,t.Domain
,t.Media
,t.Approved
,t.CreatedBy
FROM @ProcessTable t
JOIN (SELECT MAX(Id) AS LatestId, Order FROM OrderDetail OD GROUP BY Order) temp
ON temp.Order = t.Order
ORDER BY temp.[DateTime] DESC, Approved ASC
Обратите внимание, я удалил предложение OD.Order = t.Order во вложенном SELECT и добавил в GROUP BY. Условие рядом с этим соединением (temp.Order = t.Order) выполняет фильтрацию, поэтому нет необходимости находиться во вложенном выделении - оно вызывало ошибку. Кроме того, поскольку вы используете агрегатную функцию (MAX), вам требуется GROUP BY.
Также я дал псевдоним MAX (Id), который будет возвращен как