Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Нуждаете се от помощ за T-SQL за конвертиране на редове от множество таблици в колони със стойности в Sql Server 2005

Първата ми мисъл е да подобря схемата и наистина ли трябва да направите това.

За да опростите въпроса, изглежда, че искате да зададете името на колоната въз основа на съединение към mstBCE. Нямате нужда от релация, защото броят на колоните в tblBCE е фиксиран. Вместо това използвайте динамичен sql, за да зададете имената на колоните, избирайки от mstBCE, завъртяни върху един ред.

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. Копирайте базата данни на SQL Server Express на друг компютър

  2. SQL:Изберете най-новата последователно различна стойност с групиране

  3. Идентифицирайте действието, което изтрива всички редове в таблица

  4. Добавяне на колона с уникален идентификатор и добавяне на по подразбиране за генериране на ново ръководство

  5. Как да вмъкна данни, ако не между тях в sql сървър 2008?