sql >> Base de Datos >  >> RDS >> Sqlserver

Seleccionar columnas de una tabla en función de los nombres de las columnas de otra tabla

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)

Demostración del servidor sql

Respuesta anterior. Funciona para mssql

Ver demostración de mysql

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;