Mein erster Gedanke ist, das Schema zu verbessern und müssen Sie dies wirklich tun.
Um die Frage zu vereinfachen, sieht es so aus, als ob Sie den Spaltennamen basierend auf einem Join zu mstBCE festlegen möchten. Sie benötigen keine Beziehung, da die Anzahl der Spalten in tblBCE festgelegt ist. Verwenden Sie stattdessen dynamisches SQL, um die Spaltennamen festzulegen, die aus mstBCE ausgewählt werden, die auf eine Zeile geschwenkt werden.
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);