Meine vorherige Antwort war für mysql. Da das Tag seitdem für die Frage aktualisiert wurde, ist hier die Abfrage für sql-server-2008
.
Erstellen Sie eine Liste von Spalten aus den Werten in table_levels
, entfernen Sie den letzten ,
, erstellen Sie eine Abfragezeichenfolge, um die Ergebnisse von table_results
abzurufen , und dann ausführen.
DECLARE @listStr varchar(MAX) = ( select selectColumnName + ',' from table_levels where level = 1 for xml path(''))
DECLARE @query varchar(MAX) = 'SELECT ' + LEFT(@listStr, LEN(@listStr)-1) + ' FROM table_results'
execute(@query)
Vorherige Antwort. Funktioniert für mssql
Siehe Demo für MySQL
Verwenden Sie GROUP_CONCAT
um aus den Werten in table_levels
einen String zu machen und erstellen Sie dann eine Abfragezeichenfolge, um die Ergebnisse von table_results
abzurufen
SET @listStr = ( SELECT GROUP_CONCAT(selectColumnName) FROM table_levels where level = 1);
SET @query := CONCAT('SELECT ', @listStr, ' FROM table_results');
PREPARE STMT FROM @query;
EXECUTE STMT;