Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memindahkan Jadual Penuh dalam MS SQL Menggunakan UNPIVOT dan PIVOT?
MS SQL Server: Lengkapkan Transposisi Jadual dengan UNPIVOT dan PIVOT
Memindahkan jadual dengan berbilang lajur dalam MS SQL Server memerlukan pendekatan gabungan menggunakan fungsi UNPIVOT
dan PIVOT
. UNPIVOT
membentuk semula berbilang lajur menjadi baris, manakala PIVOT
menukar kembali nilai baris kepada lajur.
Panduan Langkah demi Langkah:
Data Nyahpaut:
Langkah ini menukar data lajur anda kepada baris. Gantikan yourtable
, A
, B
, value
dan col
dengan nama jadual dan lajur sebenar anda.
<code class="language-sql">SELECT day, col, value FROM yourtable UNPIVOT ( value FOR col IN (A, B) ) unpiv</code>
Data Pivoting:
Di sini, data baris diputar semula ke dalam lajur. Laraskan Mon
, Tue
, Wed
, Thu
, Fri
untuk memadankan nama lajur khusus anda (hari dalam minggu dalam contoh ini).
<code class="language-sql">SELECT * FROM (SELECT * FROM ...) src -- Replace ... with the UNPIVOT query from step 1 PIVOT ( MAX(value) FOR day IN (Mon, Tue, Wed, Thu, Fri) ) piv</code>
Integrasi ke dalam Pertanyaan Sedia Ada:
Untuk menukar data dalam pertanyaan sedia ada, gabungkan operasi UNPIVOT
dan PIVOT
:
<code class="language-sql">SELECT * FROM ( SELECT LEFT(DATENAME(dw, datetime), 3) AS DateWeek, col, value FROM DataTable CROSS APPLY ( VALUES ('A', ACalls), ('B', BCalls) ) c (col, value) ) src PIVOT ( SUM(value) FOR DateWeek IN (Mon, Tue, Wed, Thu, Fri) ) piv</code>
Contoh menggunakan PIVOT dan CROSS APPLY (SQL Server 2008 dan kemudian):
Contoh ini memanfaatkan CROSS APPLY
untuk penyelesaian yang lebih ringkas.
<code class="language-sql">SELECT day, col, value FROM yourtable CROSS APPLY ( VALUES ('A', ACalls), ('B', BCalls) ) c (col, value) PIVOT ( MAX(value) FOR day IN (Mon, Tue, Wed, Thu, Fri) ) piv</code>
Pertimbangan Penting:
col
dalam hasil yang tidak dipangsi memaparkan nama lajur asal.MAX()
boleh digantikan dengan fungsi agregat lain (seperti SUM()
, AVG()
, dsb.) berdasarkan keperluan data anda.Panduan komprehensif ini menunjukkan cara mengubah keseluruhan jadual dalam MS SQL Server dengan berkesan, menawarkan fleksibiliti dan kebolehsuaian untuk pelbagai senario manipulasi data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memindahkan Jadual Penuh dalam MS SQL Menggunakan UNPIVOT dan PIVOT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!