2016-09-19 11 views
0

Unter dem Tisch, wie ich es habe. Ich habe eine Alias-Spalte mit einem Wert. Ich versuche dynamische Spalten aus dem Alias ​​zu machen. Die Aliase sind dynamisch, so dass sie sich ändern können.Erstellen von Spalten aus Werten - MySQL

MySQL Join Multiple Rows as Columns hier haben sie 2 Tabellen, denen sie beitreten, ich habe nur eine. Aber ich kann es immer noch nicht zur Arbeit bringen. Ich frage mich, ob ich wirklich eine Vorbereitungserklärung brauche.

Als ich

SELECT GROUP_CONCAT(DISTINCT CONCAT('value AS ', alias)) 

verwenden Ich bin bekommen dieses Stück Abfrage als Spaltennamen.


ID value alias 
1 aaa  test1 
1 bbb  test2 
1 ccc  test3 
2 ddd  test1 
2 eee  test2 
2 fff  test3 

Das gewünschte Ergebnis direkt aus der MySQL-Abfrage ist:

ID test1 test2 test3 
1  aaa  bbb  ccc 
2  ddd  eee  fff 

Wer weiß, wie dies zu erreichen?

+4

Mögliche Duplikat [MySQL Pivotzeile in dynamische Anzahl der Spalten] (http://stackoverflow.com/questions/12004603/mysql-pivot-row- in-dynamic-column-column) – Shadow

+0

Diese Frage wurde schon mehrfach gestellt. – spencer7593

Antwort

0

Eine einfache Dreh Abfrage sollte hier arbeiten:

SELECT ID, 
     MAX(CASE WHEN alias = 'test1' THEN value ELSE NULL END) AS test1, 
     MAX(CASE WHEN alias = 'test2' THEN value ELSE NULL END) AS test2, 
     MAX(CASE WHEN alias = 'test3' THEN value ELSE NULL END) AS test3 
FROM yourTable 
GROUP BY ID 
+0

Vielen Dank für Ihre Antwort. Das ist cool, aber die Aliase sind dynamisch. Ich werde meine Frage bearbeiten. –

+0

@Tim vanUum: Die Aussage in dieser Antwort wird die Ergebnismenge erzeugen. Wenn Sie möchten, dass dies dynamisch ist, eine variierende Anzahl von Spalten oder unterschiedliche Spaltenaliase aufweist, kann dies nicht dynamisch in einer einzelnen SQL-Anweisung durchgeführt werden. Der dynamische Teil des Prozesses, ein separater Schritt, erzeugt diesen SQL-Text, der ausgeführt werden soll. – spencer7593

Verwandte Themen