„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie man MySQL -Tabellendaten mit Fragen Antworten als Spalten drehen?

Wie man MySQL -Tabellendaten mit Fragen Antworten als Spalten drehen?

Gepostet am 2025-03-23
Durchsuche:890

How to Pivot MySQL Table Data with Question Answers as Columns?

mysql pivot table columndaten als rows

pivot-Tabellen sind ein leistungsstarkes Tool, um Daten aus einem spalungsbasierten Format in ein zeilenbasiertes Format zu transformieren. In MySQL kann diese Transformation unter Verwendung des Fallausdrucks in Verbindung mit Aggregationsfunktionen erreicht werden.

Um die angegebenen Daten in ein Pivot -Tabellenformat umzuwandeln, wobei Fragen Antworten als Spalten angezeigt werden, kann die folgende Abfrage verwendet werden:

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

In dieser Abfrage wird der Fallausdruck verwendet, um die Fragespalte der Frage Tabelle zu überprüfen und die entsprechende Antwort aus der Antwortentabelle zurückzugeben. Die Aggregationsfunktion max wird dann verwendet, um den maximalen Wert für jede Frage zu finden, die die Antwort für diese Frage darstellt. WÄHLEN Group_Concat (verschieden Concat ( 'Max (Fall, wenn C.Question =' ',, Frage, '' 'dann B.answer Ende) als', ', Concat ('' ', Frage,' '') ) ) In @SQL Aus der Frage; Setzen Sie @SQL = concat ('Select A.id, A.User_id, A.JOB_ID, ', @SQL,' Aus Ergebnissen a Innere Join Antworten B Auf a.id = b.fk_result_id Innere Beitrittsfrage c Auf b.fk_question_id = C.id Gruppe von A.id, A.User_id, a.job_id '); Bereiten Sie STMT von @SQL vor; STMT ausführen; DealLocate erstellen stmt;

Dieser Code generiert eine dynamische SQL -Anweisung, die eine beliebige Anzahl von Fragen bearbeiten kann. Es konstruiert die Auswahlklausel dynamisch, indem der maximale Wert für jede Frage als Spaltenname verkettet wird. Das Ergebnis der Abfrage ist eine Pivot -Tabelle mit dem gewünschten Format, wobei jede Frage -Antwort als separate Spalte angezeigt wird.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3