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