Devi trasmettere tutti i numeri a nvarchar nella concatenazione.
Non esiste una conversione implicita dello stile VBA in stringa. In SQL Server la precedenza del tipo di dati significa che gli ints sono maggiori di nvarchar:quindi l'intera stringa sta cercando di essere CAST su int.
SET @SQL = 'SELECT ' + @GName + ' AS GrName ,' + @BR
+ CAST(@T_ID AS nvarchar(10)) + ' AS To_ID ,' ...
Modifica:Will A ha un buon punto:fai attenzione ai NULL!