Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengubah Data MySQL ke Baris Tunggal dengan Pengepala Lajur Dinamik?

Bagaimana untuk Mengubah Data MySQL ke Baris Tunggal dengan Pengepala Lajur Dinamik?

Susan Sarandon
Susan Sarandonasal
2025-01-06 09:51:40435semak imbas

How to Pivot MySQL Data into a Single Row with Dynamic Column Headers?

MYSQL PIVOT/CROSSTAB QUERY

Masalah 1: Mendapatkan Data dalam Satu Baris Tunggal

Anda boleh menggunakan fungsi PIVOT untuk menukar data anda kepada format baris tunggal. Pertanyaan berikut mengubah suai percubaan anda sebelum ini untuk mencapai ini:

SELECT 
  app_id,
  transaction_id,
  mobile_no,
  MAX(CASE WHEN node_id = 1 THEN entered_value END) AS Q1,
  MAX(CASE WHEN node_id = 2 THEN entered_value END) AS Q2,
  MAX(CASE WHEN node_id = 3 THEN entered_value END) AS Q3,
  MAX(CASE WHEN node_id = 4 THEN entered_value END) AS Q4,
  MAX(CASE WHEN node_id = 5 THEN entered_value END) AS Q5
FROM trn_user_log
GROUP BY app_id, transaction_id, mobile_no;

Pertanyaan ini mengumpulkan baris mengikut app_id, transaction_id dan mobile_no dan menggunakan fungsi MAX untuk mendapatkan nilai maksimum yang dimasukkan untuk setiap lajur node_id, yang sepadan kepada nilai "Q" yang anda ingin paparkan.

Masalah 2: Menggunakan Lajur Nilai sebagai Nama Pengepala

Untuk menggunakan nilai dalam lajur customer_attribute sebagai nama pengepala, anda boleh menggunakan pernyataan CASE bersama-sama dengan kata kunci AS. Pertanyaan yang diubah suai adalah seperti berikut:

SELECT 
  app_id,
  transaction_id,
  mobile_no,
  MAX(CASE WHEN node_id = 1 THEN entered_value END) AS CASE customer_attribute WHEN 'Q1' THEN entered_value END,
  MAX(CASE WHEN node_id = 2 THEN entered_value END) AS CASE customer_attribute WHEN 'Q2' THEN entered_value END,
  MAX(CASE WHEN node_id = 3 THEN entered_value END) AS CASE customer_attribute WHEN 'Q3' THEN entered_value END,
  MAX(CASE WHEN node_id = 4 THEN entered_value END) AS CASE customer_attribute WHEN 'Q4' THEN entered_value END,
  MAX(CASE WHEN node_id = 5 THEN entered_value END) AS CASE customer_attribute WHEN 'Q5' THEN entered_value END
FROM trn_user_log
GROUP BY app_id, transaction_id, mobile_no;

Dalam pertanyaan ini, pernyataan CASE digunakan dalam fungsi MAX untuk memilih nilai_masukan berdasarkan nilai atribut_pelanggan yang sepadan. Kata kunci AS memperuntukkan nilai atribut_pelanggan yang sepadan sebagai pengepala lajur.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data MySQL ke Baris Tunggal dengan Pengepala Lajur Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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