Mi respuesta anterior fue para mysql. Dado que la etiqueta se actualizó en la pregunta desde entonces, aquí está la consulta para sql-server-2008
.
Cree una lista de columnas a partir de los valores en table_levels
, elimina el último ,
, cree una cadena de consulta para obtener los resultados de table_results
y luego ejecutar.
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)
Respuesta anterior. Funciona para mssql
Usa GROUP_CONCAT
para hacer una cadena con los valores en table_levels
y luego crea una cadena de consulta para obtener los resultados de table_results
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;