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

Wartości wierszy programu SQL Server jako nazwy kolumn Tabela przestawna?

Możesz to zrobić za pomocą PIVOT funkcjonować. Jeśli znasz wartości, które chcesz przekształcić w kolumny, możesz na stałe zakodować, używając statycznego elementu przestawnego:

select *
from 
(
  select dept, emp_id, emp_name, p_date, hours_worked
  from table1
) x
pivot
(
  max(hours_worked)
  for p_date in ([2012-10-19], [2012-10-20], [2012-10-21])
) p

Zobacz Skrzypce SQL z wersją demonstracyjną

Jeśli masz nieznaną liczbę wartości, możesz użyć dynamicznego sql do PIVOT dane:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' 
                        + QUOTENAME(convert(char(10), p_date, 120)) 
                    from table1
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT dept, emp_id, emp_name,' + @cols + ' from 
             (
                select dept, emp_id, emp_name, p_date, hours_worked
                from table1
            ) x
            pivot 
            (
                max(hours_worked)
                for p_date in (' + @cols + ')
            ) p '

execute(@query)

Zobacz Skrzypce SQL z wersją demonstracyjną




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zdobądź wszystkich rodziców na dziecko

  2. SQL Server DELETE — usuwanie jednego lub więcej wierszy z tabeli w nieco zaawansowanych scenariuszach

  3. Kodowanie SQL_Latin1_General_CP1_CI_AS do UTF-8

  4. DATENAME() Przykłady w SQL Server

  5. Jak zainstalować freetds w Linuksie?