Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengubah Data Lajur MySQL ke Baris Menggunakan Agregasi dan Pernyataan Bersyarat?

Bagaimana untuk Mengubah Data Lajur MySQL ke Baris Menggunakan Agregasi dan Pernyataan Bersyarat?

Patricia Arquette
Patricia Arquetteasal
2024-12-21 18:12:18663semak imbas

How to Pivot MySQL Column Data into Rows Using Aggregation and Conditional Statements?

Data Lajur Jadual Pangsi MySQL sebagai Baris

Untuk memaksi data lajur jadual secara berkesan ke dalam baris dalam MySQL, anda boleh menggunakan gabungan fungsi pengagregatan dan bersyarat kenyataan.

Pertanyaan:

SELECT
  a.ID,
  a.user_ID,
  a.job_id,
  MAX(CASE WHEN c.question = 'Is it this?' THEN b.answer END) 'Is it this?',
  MAX(CASE WHEN c.question = 'Or this?' THEN b.answer END) 'Or this?',
  MAX(CASE WHEN c.question = 'Or that? ' THEN b.answer END) 'Or that? '
FROM
  Results a
INNER JOIN
  Answers b ON a.id = b.fk_result_id
INNER JOIN
  Question c ON b.fk_question_id = c.ID
GROUP BY
  a.ID,
  a.user_ID,
  a.job_id;

Penjelasan:

  1. Sertai Keputusan, Jawapan dan Soalan jadual.
  2. Gunakan pernyataan KES untuk menilai sama ada setiap syarat soalan dipenuhi dan mengembalikan yang sepadan jawapan.
  3. Agregat jawapan maksimum untuk setiap soalan menggunakan fungsi MAX().

Petua Tambahan:

  • Jika anda mempunyai bilangan soalan yang dinamik, pertimbangkan untuk menggunakan pertanyaan SQL dinamik berdasarkan soalan yang tersedia.
  • Gunakan Pautan demo SQLFiddle disediakan dalam jawapan untuk demonstrasi praktikal.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data Lajur MySQL ke Baris Menggunakan Agregasi dan Pernyataan Bersyarat?. 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