sql >> Database >  >> RDS >> Sqlserver

T-SQL-hulp nodig voor het converteren van rijen van meerdere tabellen naar kolommen met waarden in Sql Server 2005

Mijn eerste gedachte is het verbeteren van het schema en moet je dit echt doen.

Om de vraag te vereenvoudigen, lijkt het erop dat je de kolomnaam wilt instellen op basis van een join naar mstBCE. Je hebt geen relatie nodig omdat het aantal kolommen in tblBCE vast is. Gebruik in plaats daarvan dynamische sql om de kolomnamen in te stellen die uit mstBCE naar één rij zijn gedraaid.

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. Haal alle rijen op, maar het eerste record ontbreekt

  2. Postgresql-socketfout op OSX 10.7.3 bij het uitvoeren van Django's syncdb

  3. Extreem grote XML-bestanden parseren in php

  4. Oracle SQL converteert de datumnotatie van DD-Mon-YY naar YYYYMM