For at undgå en sådan fejl kan du bruge CASE + ISNUMERIC til at håndtere scenarier, hvor du ikke kan konvertere til int.
Skift
CONVERT(INT, CONVERT(VARCHAR(12), a.value))
Til
CONVERT(INT,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
ELSE 0 END)
Grundlæggende er dette at sige, hvis du ikke kan konvertere mig til int tildele værdien 0 (i mit eksempel)
Alternativt kan du se denne artikel om oprettelse af en brugerdefineret funktion, der kontrollerer om a.value er nummer:https://www.tek-tips.com/faqs.cfm?fid=6423