Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengubah Baris ke Lajur dalam SQL Menggunakan Pertanyaan Pangsi?

Bagaimanakah Saya Boleh Mengubah Baris ke Lajur dalam SQL Menggunakan Pertanyaan Pangsi?

Barbara Streisand
Lepaskan: 2025-01-03 04:25:42
asal
822 orang telah melayarinya

How Can I Transpose Rows into Columns in SQL Using a Pivot Query?

SQL Transpose Rows as Columns: A Pivoted Solution

Dalam SQL, transposing baris sebagai lajur ialah teknik yang berguna untuk membentuk semula data jadual. Memandangkan jadual dengan baris yang mewakili titik data dan lajur yang mewakili pembolehubah, anda mungkin menghadapi senario yang memerlukan untuk menukar orientasi data.

Satu senario sedemikian, seperti yang diterangkan dalam soalan, melibatkan jadual dengan jawapan dan soalan . Matlamatnya adalah untuk menukar data respons ke dalam format lajur, di mana setiap soalan menjadi lajur dan setiap jawapan pengguna kepada soalan itu dipaparkan dalam baris yang sepadan.

Untuk mencapai transposisi ini, anda boleh menggunakan teknik yang diketahui sebagai "pertanyaan pangsi". Pernyataan SQL berikut menunjukkan penyelesaian menggunakan PostgresSQL:

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

Pertanyaan ini menggunakan pengagregatan bersyarat untuk mengumpulkan dan mengagregat nilai respons berdasarkan ID soalan. Penyataan CASE mengekstrak jawapan untuk setiap soalan dan menetapkannya kepada lajur tertentu. Fungsi MAX() digunakan untuk memastikan bahawa hanya respons terkini untuk setiap pasangan soalan-pengguna disertakan.

Output pertanyaan ini akan menyerupai format transposed yang dikehendaki, di mana setiap ID pengguna disenaraikan dalam yang pertama. lajur, diikuti dengan lajur untuk setiap soalan yang mengandungi respons pengguna (atau NULL jika tiada respons wujud).

Pertanyaan pangsi ini ialah pendekatan standard untuk transposing baris sebagai lajur dalam SQL. Ia menyediakan penyelesaian yang cekap dan fleksibel untuk mengendalikan bilangan soalan dan kombinasi jawapan secara dinamik.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Baris ke Lajur dalam SQL Menggunakan Pertanyaan Pangsi?. 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