Você parece estar assumindo algum tipo de avaliação de curto-circuito ou ordenação garantida dos predicados no
WHERE
cláusula. Isso não é garantido. Quando você mistura tipos de dados em uma coluna como essa, a única maneira segura de lidar com eles é com um CASE
expressão. Usar (por exemplo)
CONVERT(DATETIME,
CASE WHEN ISDATE(pa.Attribute_Value) = 1 THEN pa.Attribute_Value END)
Não
CONVERT(DATETIME, pa.Attribute_Value)