Dovrebbe essere, se non del tutto:
SELECT ...
CASE
WHEN ISDATE(ColumnName) = 1 THEN CONVERT(datetime, ColumnName, 103)
ELSE NULL
END
....
ma non stai usando ISDATE WITH CONVERT, poiché non esiste un'espressione come
ISDATE(CONVERT(varchar,ColumnName,112))
senza la conversione annidata il valore restituito dipende da cose come le impostazioni della lingua, quindi è un comportamento non deterministico. Senza una conoscenza "esterna", non è possibile prevedere il risultato che si sta ottenendo, basandosi solo sull'input.