Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Pivot Baris ke Lajur dalam SQL untuk Respons Pengguna?

Bagaimana untuk Pivot Baris ke Lajur dalam SQL untuk Respons Pengguna?

Linda Hamilton
Linda Hamiltonasal
2025-01-05 17:01:42884semak imbas

How to Pivot Rows into Columns in SQL for User Responses?

SQL Transpose Baris sebagai Lajur

Memindahkan baris ke lajur dalam SQL ialah teknik yang membolehkan anda menukar jadual dengan data berorientasikan baris ke dalam jadual dengan data berorientasikan lajur. Teknik ini biasanya dikenali sebagai pivoting.

Dalam senario khusus anda, anda mempunyai dua jadual:

  • respons: Mengandungi jawapan pengguna kepada soalan.
  • soalan: Mengandungi yang sebenar soalan.

Matlamat anda adalah untuk menukar jadual "respons" supaya setiap jawapan pengguna kepada soalan berbeza muncul sebagai lajur, bukannya baris.

Langkah demi- Langkah Penyelesaian:

Untuk mencapai transposisi yang diingini, anda boleh menggunakan gabungan cantuman dan bersyarat pengagregatan:

SELECT r.user_id,
       MAX(CASE WHEN r.question_id = 1 THEN r.body ELSE NULL END) AS "Do you like apples?",
       MAX(CASE WHEN r.question_id = 2 THEN r.body ELSE NULL END) AS "Do you like oranges?",
       MAX(CASE WHEN r.question_id = 3 THEN r.body ELSE NULL END) AS "Do you like carrots?"
FROM responses r
JOIN questions q ON q.id = r.question_id
GROUP BY r.user_id;

Penjelasan:

  • Pertanyaan mula-mula menyertai jadual "respons" dan "soalan" pada lajur "id_soalan", yang memautkan setiap respons kepada soalan yang sepadan.
  • Ia kemudian menggunakan pengagregatan bersyarat dengan fungsi MAX() untuk dapatkan nilai respons maksimum untuk setiap pengguna dan kombinasi soalan.
  • Pernyataan CASE menyemak ID soalan dan mengembalikan badan respons jika ia sepadan dengan ID.
  • Akhir sekali, klausa GROUP BY mengelompokkan keputusan mengikut ID pengguna, memastikan bahawa setiap respons pengguna diagregatkan bersama.

Contoh Keputusan:

user_id | Do you like apples? | Do you like oranges? | Do you like carrots?
-------- | ------------------ | ------------------- | -------------------
1       | Yes                 | Yes                  | No
2       | Yes                 | No                   | No

Atas ialah kandungan terperinci Bagaimana untuk Pivot Baris ke Lajur dalam SQL untuk Respons Pengguna?. 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