Du verkar anta någon form av kortslutningsutvärdering eller garanterad ordning av predikaten i WHERE
klausul. Detta är inte garanterat. När du har blandade datatyper i en sådan kolumn är det enda säkra sättet att hantera dem med ett CASE
uttryck.
Använd (t.ex.)
CONVERT(DATETIME,
CASE WHEN ISDATE(pa.Attribute_Value) = 1 THEN pa.Attribute_Value END)
Inte
CONVERT(DATETIME, pa.Attribute_Value)