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
Lepaskan: 2025-01-05 17:01:42
asal
885 orang telah melayarinya

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

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

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!

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