Vous devez CAST tous les nombres vers nvarchar dans la concaténation.
Il n'y a pas de conversion de style VBA implicite en chaîne. Dans SQL Server, la priorité des types de données signifie que les ints sont supérieurs à nvarchar :la chaîne entière essaie donc d'être convertie en int.
SET @SQL = 'SELECT ' + @GName + ' AS GrName ,' + @BR
+ CAST(@T_ID AS nvarchar(10)) + ' AS To_ID ,' ...
Edit :Will A a un bon point :faites attention aux valeurs NULL !