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

Transponuj niektóre kolumny do wierszy za pomocą funkcji przestawnej za pomocą SQL

Jest kilka rzeczy, które są niepoprawne w Twoim zapytaniu.

Po pierwsze, brakuje Ci funkcji agregującej w swoim PIVOT. Potrzebujesz agregatu wokół propertyvalue .

Po drugie, musisz otoczyć $row1 itp. z nawiasami kwadratowymi, a nie pojedynczymi cudzysłowami.

Po trzecie, użyłbym innego aliasu dla as pivot

W rezultacie kod będzie wyglądał następująco:

select * 
from 
(
  select name, propertyvalue, displayname
  from indexrows
) a
pivot
(
  max(propertyvalue)
  for [displayname] in ([$row1], [$row2], [$row3])
) piv;

Zobacz SQL Fiddle 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. Nazwa tabeli jako zmienna

  2. Pętla If w instrukcji „Then” instrukcji Case w SQL Server 2008

  3. Wdrażanie projektu bazy danych VS2010 — zadanie SqlDeployTask nieoczekiwanie nie powiodło się, NullReferenceException

  4. Jak odszyfrować hasło z serwera SQL?

  5. Znajdź wszystkie ciągi, które mają co najmniej X znaków, uporządkuj według podobieństwa