Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Potrzebujesz pomocy T-SQL do konwersji wierszy z wielu tabel na kolumny z wartościami w Sql Server 2005

Moją pierwszą myślą jest ulepszenie schematu i czy naprawdę musisz to zrobić.

Aby uprościć pytanie, wygląda na to, że chcesz ustawić nazwę kolumny na podstawie sprzężenia z mstBCE. Nie potrzebujesz relacji, ponieważ liczba kolumn w tblBCE jest stała. Zamiast tego użyj dynamicznego sql, aby ustawić nazwy kolumn wybierające z mstBCE przesunięte na jeden wiersz.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jednokierunkowa synchronizacja w czasie rzeczywistym z serwera sql do innego repozytorium danych

  2. SQL Server, używając tabeli jako kolejki

  3. Zaktualizowałem sterownik ODBC programu SQL Server i negatywnie wpłynęło to na wydajność. Co mogę zrobić?

  4. Nie można utworzyć parametrów połączenia dla zdalnego pulpitu dla aplikacji C#

  5. Zapytanie do konwersji Varchar HH:MM na Integer Minutes w SQL Server 2008