Parece estar asumiendo algún tipo de evaluación de cortocircuito u ordenamiento garantizado de los predicados en WHERE
cláusula. Esto no está garantizado. Cuando tiene tipos de datos mixtos en una columna como esa, la única forma segura de manejarlos es con un CASE
expresión.
Usar (p. ej.)
CONVERT(DATETIME,
CASE WHEN ISDATE(pa.Attribute_Value) = 1 THEN pa.Attribute_Value END)
No
CONVERT(DATETIME, pa.Attribute_Value)