Это дублирует ваш SQL, однако я не совсем понимаю почему вы хотите сделать это:
DECLARE @SQL nvarchar(MAX);
DECLARE @Part nvarchar(25) = 'W11282173'
WITH Tally AS (
SELECT I
FROM (VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) V(I))
SELECT @SQL = STUFF((SELECT NCHAR(10) + N'SELECT ' + QUOTENAME(N'CHECK' + CONVERT(nvarchar(2),T.I)) + N' FROM udtSmartPlastic WHERE Partnumber = @dPart;'
FROM Tally T
FOR XML PATH(N'')),1,1,N'');
PRINT @SQL;
EXEC sys.sp_executesql @SQL, N'@dPart nvarchar(25)',@dPart = @Part;
Обратите внимание, что я изменил ваш запрос с одного открытогодля инъекции, для параметризованного запроса.Инъекция далека от вашего друга, и вы должны приложить все усилия, чтобы сделать это невозможным для кого-либо.
Редактировать: Что касается нормализации ваших данных;Вы можете легко достичь этого с помощью следующего:
SELECT SP.PartNumber,
CHOOSE(T.I,Check1,Check2,Check3,Check4,Check5,Check6,Check7,Check8,Check9,Check10) AS CheckValue
--INTO udtSmartPlasticn
FROM udtSmartPlastic SP
CROSS APPLY (VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) T(I);