sql >> Database teknologi >  >> RDS >> Sqlserver

Har brug for T-SQL-hjælp til at konvertere rækker fra flere tabeller til kolonner med værdier i SQL Server 2005

Min første tanke er at forbedre skemaet, og har du virkelig brug for at gøre dette.

For at forenkle spørgsmålet ser det ud til, at du vil indstille kolonnenavnet baseret på en joinforbindelse til mstBCE. Du behøver ikke en relation, fordi antallet af kolonner i tblBCE er fast. Brug i stedet dynamisk sql til at indstille kolonnenavnene ved at vælge fra mstBCE pivoteret på én række.

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



  1. MySql Triggere for at slette underordnede poster i samme tabel

  2. Escape-kommandoparametre sendt til xp_cmdshell til dtexec

  3. Forbindelsesstrengparametre for gemte specifikationer

  4. Sådan opretter du et rullebart, opdaterbart ResultSet-objekt i JDBC