sql >> Base de Datos >  >> RDS >> Sqlserver

Necesita ayuda de T-SQL para convertir Filas de varias tablas en Columnas con valores en Sql Server 2005

Mi primer pensamiento es mejorar el esquema y ¿realmente necesitas hacer esto?

Para simplificar la pregunta, parece que desea establecer el nombre de la columna en función de una combinación con mstBCE. No necesita una relación porque la cantidad de columnas en tblBCE es fija. En su lugar, use sql dinámico para establecer los nombres de las columnas seleccionando desde mstBCE girado en una fila.

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