Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tolong jelaskan bagian-bagian dari PIVOT

Penjelasan kueri pivot

FROM 
    (SELECT OtherID, Val, amount
    FROM @randomTable) p

Ini adalah kolom yang menjadi "data dasar" untuk pivot. Jangan sertakan kolom yang tidak melakukan apa pun. Sama seperti Anda tidak memasukkan kolom non-GROUP BY ke dalam klausa SELECT, Anda juga tidak mencantumkan kolom yang tidak digunakan dalam sumber PIVOT.

PIVOT
(
    max(amount)
    FOR Val IN (Val1, Val2, Val3, Val4, Val5)
) AS PivotTable;

Bagian ini mengatakan bahwa Anda membuat 5 kolom baru bernama "Val1" hingga "Val5". Nama kolom ini mewakili nilai di kolom Val. Jadi diharapkan tabel Anda akan berisi sesuatu seperti ini

otherID   Val     amount
1         Val1    1
2         Val2    2
1         Val3    3
1         Val1    5
(etc)     (this column contains one of Val1 - Val5, or null)

Jadi Anda sekarang memiliki 5 kolom baru yang sebelumnya tidak ada. Apa yang masuk ke kolom?

  • Setiap kolom yang muncul di OUTPUT yang bukan kolom PIVOT adalah kolom "GROUP BY".
  • Fungsi agregat adalah yang mengumpulkan semua data ke dalam sel yang merupakan CROSS antara kolom GROUP BY dan kolom PIVOTED.

Jadi, untuk mengilustrasikannya, dengan menggunakan contoh data di atas, kita memiliki otherID=1 dan val=Val1. Di tabel keluaran, hanya ada satu sel yang mewakili kombinasi Maks(jumlah) ini untuk setiap kombinasi (ID lain/val)

otherID   Val1   Val2   Val3   Val4   Val5
1         <x>    ...    ...    ...    ...
(etc)

Untuk sel bertanda <x> , hanya satu nilai yang diperbolehkan, jadi <x> tidak boleh berisi beberapa amount nilai-nilai. Itulah alasan mengapa kita perlu menggabungkannya, dalam hal ini menggunakan MAX(amount) . Jadi sebenarnya, outputnya seperti ini

(unpivoted columns)   (pivoted, creates "new" columns)
otherID             |  Val1          Val2           Val3   Val4   Val5
1                   |  MAX(amount)   Max(amount)    << cell value = aggregate function
(etc)

Pernyataan SELECT adalah yang kemudian menampilkan kolom-kolom ini

SELECT OtherID, Val1, Val2, Val3, Val4, Val5



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menjatuhkan kolom dengan dependensi objek di SQL Server 2008?

  2. SQL Server:menggabungkan beberapa baris menjadi satu baris

  3. Klausa OrderBy menghasilkan set hasil yang berbeda ketika kolom pesanan memiliki data yang sama

  4. tutorial pemula untuk report viewer?

  5. Apa format tanggal netral budaya untuk SQL Server?