मेरा पहला विचार स्कीमा में सुधार करना है और क्या आपको वास्तव में ऐसा करने की ज़रूरत है।
प्रश्न को सरल बनाने के लिए ऐसा लगता है कि आप mstBCE में शामिल होने के आधार पर कॉलम नाम सेट करना चाहते हैं। आपको संबंध की आवश्यकता नहीं है क्योंकि tblBCE में कॉलम की संख्या निश्चित है। इसके बजाय एक पंक्ति पर पिवोट किए गए mstBCE से कॉलम नामों को सेट करने के लिए डायनामिक एसक्यूएल का उपयोग करें।
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);