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

Транспониране в SQL Server 2012

Но ако искате ДИНАМИЧНО:Sql ДЕМО

Първо се нуждаете от временна таблица, за да създадете row_id

SELECT row_number() over (partition by [Country] order by [StateCity]) [rn], 
       [StateCity],
       [Country]
INTO temp
FROM State;

След това можете да преминете към маршрута на динамичното завъртане

Създайте различните колони

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.[Country]) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

Създайте обобщената заявка:

set @query = 'SELECT rn, ' + @cols + ' from 
            (
                select [rn]
                     , [StateCity]
                     , [Country]
                from temp
           ) x
            pivot 
            (
                 max(StateCity)
                for [Country] in (' + @cols + ')
            ) p ';

Изпълнете го

execute(@query);

ИЗХОДИ:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли бърз начин да проверите дали НЯКОЯ колона е NULL?

  2. Използване на merge..output за получаване на съпоставяне между source.id и target.id

  3. Преобразувайте „smalldatetime“ в „date“ в SQL Server (T-SQL примери)

  4. Намерете MIN и MAX дата за прекъснат период от време ГГГГММ00

  5. Защо логическите показания за прозоречни агрегатни функции са толкова високи?