Wygląda na to, że zakładasz jakiś rodzaj oceny zwarcia lub gwarantowaną kolejność predykatów w WHERE
klauzula. Nie jest to gwarantowane. Kiedy masz mieszane typy danych w takiej kolumnie, jedynym bezpiecznym sposobem radzenia sobie z nimi jest użycie CASE
wyrażenie.
Użyj (np.)
CONVERT(DATETIME,
CASE WHEN ISDATE(pa.Attribute_Value) = 1 THEN pa.Attribute_Value END)
Nie
CONVERT(DATETIME, pa.Attribute_Value)