Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Pivot Baris ke Lajur dalam MySQL?

Bagaimana untuk Pivot Baris ke Lajur dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2025-01-25 11:42:11
asal
251 orang telah melayarinya

How to Pivot Rows into Columns in MySQL?

Bil Jadual Data MySQL Tukar Penjelasan Terperinci

Pengenalan

Jadual data mewakili nilai pemerhatian dan lajur dalam jadual data untuk mengubah data atribut ke dalam senarai nilai pemerhatian. Artikel ini secara beransur -ansur akan menerangkan bagaimana untuk mencapai penukaran ini di MySQL.

Langkah 1: Pilih lajur sasaran

ditentukan bahawa nilai y (garisan jadual hasil) dan nilai x (jadual hasil) dalam jadual perspektif sasaran akan ditentukan. Dalam contoh ini, "Hostid" akan digunakan sebagai nilai, dan "Nama Item" akan digunakan sebagai nilai X.

Langkah 2: Lanjutkan jadual asas untuk menambah tambahan

Tambahkan senarai baru ke asas untuk setiap nilai x. Gunakan ungkapan kes untuk mengisi lajur ini ke dalam item yang sepadan berdasarkan nama item.

Langkah 3: Jadual Sambungan Pakej dan Pengagregatan

Jadual lanjutan dibungkus mengikut lajur nilai y, dan lajur nilai x diagregatkan dengan fungsi yang sesuai (seperti jumlah).

Langkah 4: Mencantikkan (Pilihan)

Penggantian sebarang nilai null dalam jadual pempolimeran ke nilai neutral yang dipilih (misalnya, 0) untuk menghasilkan hasil yang lebih jelas dari visual.

Contoh

Pertimbangkan jadual asas berikut:

Buat jadual perspektif

hostid itemname itemvalue
1 A 10
1 B 3
2 A 9
2 C 40

Hasil

<code class="language-sql">-- 步骤 1:选择目标列
SELECT hostid, itemname, itemvalue
FROM history;

-- 步骤 2:扩展基础表添加额外列
CREATE VIEW history_extended AS
SELECT
  history.*,
  CASE WHEN itemname = "A" THEN itemvalue END AS A,
  CASE WHEN itemname = "B" THEN itemvalue END AS B,
  CASE WHEN itemname = "C" THEN itemvalue END AS C
FROM history;

-- 步骤 3:分组和聚合扩展表
CREATE VIEW history_itemvalue_pivot AS
SELECT
  hostid,
  SUM(A) AS A,
  SUM(B) AS B,
  SUM(C) AS C
FROM history_extended
GROUP BY hostid;

-- 步骤 4:美化
CREATE VIEW history_itemvalue_pivot_pretty AS
SELECT 
  hostid, 
  COALESCE(A, 0) AS A, 
  COALESCE(B, 0) AS B, 
  COALESCE(C, 0) AS C 
FROM history_itemvalue_pivot;

-- 最终结果
SELECT *
FROM history_itemvalue_pivot_pretty;</code>
Salin selepas log masuk
Contoh ini menunjukkan cara membentuk semula jadual di MySQL dengan berkesan untuk menukar garis menjadi lajur.

Atas ialah kandungan terperinci Bagaimana untuk Pivot Baris ke Lajur dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan