Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Selecione colunas de uma tabela com base nos nomes das colunas de outra tabela


Minha resposta anterior foi para mysql. Como a tag foi atualizada na pergunta desde então, aqui está a consulta para sql-server-2008 .

Crie uma lista de colunas a partir dos valores em table_levels , remova o último , , crie uma string de consulta para obter os resultados de table_results , e depois execute.
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)

Demonstração para sql server

Resposta anterior. Funciona para mssql

Veja demo para mysql

Use GROUP_CONCAT para fazer uma string com os valores em table_levels e, em seguida, crie uma string de consulta para obter os 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;