Невозможно динамически построить список полей в предложении for in.
for [id] in (select ID from dbo.TableB (nolock))
Это не разрешено. Вы должны явно перечислить имена столбцов (Извините)
Изменение: выберите ID из dbo.TableB
To: (Field1, field2, Field3) - фактические имена полей, которые вы хотите вернуть
Пример:
-- Pivot table with one row and five columns
SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,
[0], [1], [2], [3], [4]
FROM
(SELECT DaysToManufacture, StandardCost
FROM Production.Product) AS SourceTable
PIVOT
(
AVG(StandardCost)
FOR DaysToManufacture IN ([0], [1], [2], [3], [4])
) AS PivotTable;