У меня есть следующий SQL-запрос, который имеет перекрестное применение с подзапросом.
SELECT
pm.[FileName]
,REPLACE([Message], 'Upload End. Total Row:', '') cnt_char
,CAST(REPLACE([Message], 'Upload End. Total Row:', '') AS INT) AS row_count
FROM
dbo.ProductMaster pm
CROSS APPLY
(SELECT TOP 30 *
FROM dbo.ActivityLog lo
WHERE [Message] like 'Upload End%'
AND lo.[FileName] = pm.[FileName]
ORDER BY ActivityDate DESC) AS s
Он работает нормально, но если я удалю второе выражение (,REPLACE([Message], 'Upload End. Total Row:', '') cnt_char
) в выборе, я получаю следующую ошибку
Сообщение 245, уровень 16, состояние 1, строка 1
Ошибка преобразования при преобразовании значения varchar "Начало загрузки" в тип данных int.
Предложение where в подзапросе должно специально исключать все строки, где сообщение «Начало загрузки», но почему я получаю эту ошибку. Я неправильно использую CROSS APPLY
?