Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Benötigen Sie T-SQL-Hilfe zum Konvertieren von Zeilen aus mehreren Tabellen in Spalten mit Werten in Sql Server 2005

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