Min första tanke är att förbättra schemat och behöver du verkligen göra detta.
För att förenkla frågan ser det ut som att du vill ställa in kolumnnamnet baserat på en join till mstBCE. Du behöver ingen relation eftersom antalet kolumner i tblBCE är fast. Använd istället dynamisk sql för att ställa in kolumnnamnen genom att välja från mstBCE pivoterade på en rad.
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);