Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencipta Pertanyaan Crosstab MySQL untuk Menggitar Data daripada Baris ke Lajur?

Bagaimana untuk Mencipta Pertanyaan Crosstab MySQL untuk Menggitar Data daripada Baris ke Lajur?

Barbara Streisand
Lepaskan: 2025-01-06 10:42:42
asal
707 orang telah melayarinya

How to Create a MySQL Crosstab Query to Pivot Data from Rows to Columns?

Pertanyaan Pangsi/Crosstab MySQL: Mengubah Data untuk Paparan Dipertingkat

Pertanyaan tab silang atau pangsi dalam MySQL membolehkan anda mengubah data, biasanya daripada struktur berorientasikan baris kepada yang berorientasikan lajur, memudahkan analisis dan pembentangan yang lebih mudah. Untuk memahami cara menggunakan pertanyaan tab silang, mari kita mendalami contoh praktikal.

Contoh: Mengubah Data ke Format Berorientasikan Lajur

Pertimbangkan jadual dengan struktur berikut:

app_id  transaction_id  mobile_no  node_id  customer_attribute  entered_value
100     111             9999999999  1        Q1                  2
100     111             9999999999  2        Q2                  1
100     111             9999999999  3        Q3                  4
100     111             9999999999  4        Q4                  3
100     111             9999999999  5        Q5                  2
100     222             8888888888  4        Q4                  1
100     222             8888888888  3        Q3                  2
100     222             8888888888  2        Q2                  1
100     222             8888888888  1        Q1                  3
100     222             8888888888  5        Q5                  4
Salin selepas log masuk

Anda mahu memaparkan rekod ini dalam format berikut:

app_id  transaction_id  mobile     Q1  Q2  Q3  Q4 | Q5
100    111             9999999999   2   1   4  3  2
100    222             8888888888   3   1   2  1  4
Salin selepas log masuk

Untuk mencapai ini, anda boleh menggunakan pertanyaan tab silang. Walau bagaimanapun, dalam percubaan awal anda, anda mendapatkan semula berbilang baris untuk setiap titik data, yang bukan hasil yang diingini.

Pertanyaan Tab Silang Dibetulkan

Pertanyaan terlaras berikut akan memberikan hasil yang diingini:

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
Salin selepas log masuk

Menggunakan Atribut Pelanggan sebagai Pengepala Lajur

Anda juga menyatakan hasrat untuk menggunakan nilai daripada lajur customer_attribute sebagai pengepala lajur. Walaupun fungsi NAME_CONST tidak sesuai untuk tujuan ini, anda boleh menggunakan teknik yang mungkin mencapai hasil yang diingini. Walau bagaimanapun, sila berikan penjelasan lanjut tentang hasil yang anda inginkan untuk membolehkan penyelesaian yang tepat.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Pertanyaan Crosstab MySQL untuk Menggitar Data daripada Baris ke Lajur?. 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