Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изберете колони от една таблица въз основа на имената на колони от друга таблица

Предишният ми отговор беше за mysql. Тъй като оттогава етикетът е актуализиран по въпроса, ето заявката за sql-server-2008 .

Създайте списък с колони от стойностите в table_levels , премахнете последния , , създайте низ на заявка, за да получите резултатите от table_results и след това изпълнете.

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)

Демо за sql сървър

Предишен отговор. Работи за mssql

Вижте демонстрация за mysql

Използвайте GROUP_CONCAT за да направите низ от стойностите в table_levels и след това изградете низ на заявка, за да получите резултатите от 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпълнете съхранена процедура с помощта на структура на обекти

  2. Обърнете SQL резултат

  3. Създаване на низ индекс с първо код

  4. Как да задам базата данни по подразбиране в Sql Server от код?

  5. 5 Навици за наблюдение на база данни на успешните администратори на база данни