sql >> Databáze >  >> RDS >> Sqlserver

Potřebujete pomoc T-SQL pro převod řádků z více tabulek na sloupce s hodnotami v SQL Server 2005

Moje první myšlenka je zlepšit schéma a opravdu to musíte udělat.

Pro zjednodušení otázky to vypadá, že chcete nastavit název sloupce na základě spojení na mstBCE. Nepotřebujete vztah, protože počet sloupců v tblBCE je pevný. Místo toho použijte dynamické sql k nastavení názvů sloupců při výběru z mstBCE otočených do jednoho řádku.

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. Jak získat přístup k objektu RowDataPacket

  2. Rozdíl v minutách od dvou časových polí v MySQL

  3. SQL Server Vysoká dostupnost:Přidejte nový disk do existující instance clusteru s podporou převzetí služeb při selhání

  4. Postgresql Funkce pro řazení znaků v řetězci