MySQL Pivot: Tukar lajur kepada baris
Dalam pangkalan data hubungan seperti MySQL, data selalunya perlu diubah untuk tujuan pelaporan. Satu transformasi sedemikian melibatkan penukaran lajur kepada baris, satu proses yang dipanggil "pangsi". Teknik ini membolehkan perwakilan data yang lebih fleksibel dan ringkas.
Soalan:
Pertimbangkan jadual MySQL berikut:
CREATE TABLE mytable ( id INT, month VARCHAR(3), col1 VARCHAR(1), col2 VARCHAR(1), col3 VARCHAR(1), col4 VARCHAR(1) ); INSERT INTO mytable (id, month, col1, col2, col3, col4) VALUES (101, 'Jan', 'A', 'B', NULL, 'B'), (102, 'Feb', 'C', 'A', 'G', 'E');
Matlamatnya ialah untuk membuat laporan yang memaparkan nilai dari col1 hingga col4 sebagai baris dan bulan Jan dan Feb sebagai lajur.
Penyelesaian:
MySQL tidak menyediakan fungsi terbina dalam untuk menyahpangsi atau memutar data. Walau bagaimanapun, kita boleh mensimulasikan operasi ini menggunakan UNION ALL dan agregat dengan ungkapan CASE.
1. Anti-perspektif:
Untuk menyahpaut data, kami mencipta subkueri baharu yang menggunakan UNION ALL untuk menggabungkan baris daripada semua lajur menjadi satu lajur:
SELECT id, month, col1 AS `value`, 'col1' AS `descrip` UNION ALL SELECT id, month, col2 AS `value`, 'col2' AS `descrip` UNION ALL SELECT id, month, col3 AS `value`, 'col3' AS `descrip` UNION ALL SELECT id, month, col4 AS `value`, 'col4' AS `descrip` FROM mytable;
2. Perspektif:
Seterusnya, kami membalut pertanyaan unpivot dalam subkueri dan menggunakan agregat dan penyata CASE untuk mengubah data ke dalam format yang diperlukan:
SELECT descrip, MAX(CASE WHEN month = 'Jan' THEN `value` ELSE NULL END) AS Jan, MAX(CASE WHEN month = 'Feb' THEN `value` ELSE NULL END) AS Feb FROM ( SELECT id, month, `value`, descrip FROM ( SELECT id, month, col1 AS `value`, 'col1' AS `descrip` UNION ALL SELECT id, month, col2 AS `value`, 'col2' AS `descrip` UNION ALL SELECT id, month, col3 AS `value`, 'col3' AS `descrip` UNION ALL SELECT id, month, col4 AS `value`, 'col4' AS `descrip` FROM mytable ) AS unpivoted ) AS src GROUP BY descrip;
Keputusan:
Descrip | Jan | Feb |
---|---|---|
col1 | A | C |
col2 | B | A |
col3 | NULL | G |
col4 | B | E |
Nota: Tukar ELSE 0 END
kepada ELSE NULL END
untuk menjadikan hasil lebih konsisten dengan spesifikasi pangkalan data dan mengelakkan nilai 0 yang tidak diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Pivot Lajur ke Baris dalam MySQL untuk Pelaporan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

TODROPAVIEWInMYSQL, gunakan "dropviewififeXistsview_name;" andTomodifyAview, gunakan "createorreplaceviewview_nameasSelect ..."

Mysqlviewscaneffectivetyutilizedesignpatternslikeadapter, penghias, kilang, andobserver.1) adapterpaternaptsdatafromdifferenttablesintoaunifiedview.2)

ViewsinmysqlarebeneficialforsImplifingceMlexqueries, Enhancingsecurity, MemastikanDataconsistency, andoptimizingperformance

TOCREATEASIMPLEVIEWInMYSQL, USETHECreatEviewStatement.1) definetheViewWithCreateViewView_nameas.2)

TOCReateUsersinMysql, UsethecreateUserStatement.1) Foralocaluser: createuser'localuser '@' localhost'identifiedby'SecureShword '; 2) foraremoteuser: createuser'remoteuser'@'%'

Mysqlviewshavelimitations: 1) theDon'tsupportallsqloperations, bintikDatamanipulationThroughviewswithjoinsorsubqueries.2) merekacanimpactperformance, terutamanya dengan komplekssum

Betul -betul

Mysqldoes'timposeahardlimitontriggers, butpracticalfactorsDeterminetheirefectiveus


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
