Suy nghĩ đầu tiên của tôi là cải thiện lược đồ và bạn có thực sự cần làm điều này không.
Để đơn giản hóa câu hỏi, có vẻ như bạn muốn đặt tên cột dựa trên một phép nối thành mstBCE, bạn không cần quan hệ vì số lượng cột trong tblBCE là cố định. Thay vào đó, hãy sử dụng sql động để đặt tên cột được chọn từ mstBCE được xoay vào một hàng.
DECLARE @sql nvarchar(4000);
SELECT @sql = N'SELECT u.[username], u.[department],
b.[Option1TB] as [' + pvt.[1] + N'], b.[Option1],
b.[Option2TB] as [' + pvt.[2] + N'], b.[Option2],
b.[Option3TB] as [' + pvt.[3] + N'], b.[Option3]
FROM tblBCE as b
JOIN tblUser as u ON b.[UserID] = u.[userid]; '
FROM (
SELECT [tabconfigid], [tabdata]
FROM mstBCE
WHERE [tabType] = N'BCE'
) as m
PIVOT ( MIN(m.[tabdata]) FOR m.[tabconfigid] IN ([1], [2], [3]) ) as pvt;
EXEC (@sql);