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
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!