Aby uniknąć takiego błędu, możesz użyć CASE
+ ISNUMERIC
do obsługi scenariuszy, w których nie można przekonwertować na int.
Zmień
CONVERT(INT, CONVERT(VARCHAR(12), a.value))
Do
CONVERT(INT,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
ELSE 0 END)
Zasadniczo oznacza to, że nie możesz przekonwertować mnie na int przypisz wartość 0 (w moim przykładzie)
Alternatywnie możesz zapoznać się z tym artykułem o tworzeniu niestandardowej funkcji, która sprawdzi, czy a.value
to numer:http://www.tek-tips.com/faqs.cfm?fid=6423