Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Besoin d'aide T-SQL pour convertir des lignes de plusieurs tables en colonnes avec des valeurs dans Sql Server 2005

Ma première pensée est d'améliorer le schéma et avez-vous vraiment besoin de le faire.

Pour simplifier la question, il semble que vous souhaitiez définir le nom de la colonne en fonction d'une jointure sur mstBCE. Vous n'avez pas besoin d'une relation car le nombre de colonnes dans tblBCE est fixe. Au lieu de cela, utilisez sql dynamique pour définir les noms de colonne en sélectionnant à partir de mstBCE pivoté sur une ligne.

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);