Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pilih kolom dari satu tabel berdasarkan nama kolom dari tabel lain

Jawaban saya sebelumnya adalah untuk mysql. Karena tag telah diperbarui pada pertanyaan sejak saat itu, berikut adalah kueri untuk sql-server-2008 .

Buat daftar kolom dari nilai di table_levels , hapus , , buat string kueri untuk memberi Anda hasil dari table_results , lalu jalankan.

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)

Demo untuk server sql

Jawaban sebelumnya. Bekerja untuk mssql

Lihat demo untuk mysql

Gunakan GROUP_CONCAT untuk membuat string dari nilai-nilai di table_levels dan kemudian buat string kueri untuk memberi Anda hasil dari 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. Bagaimana ORIGINAL_DB_NAME() Bekerja di SQL Server

  2. DATEDIFF() vs DATEDIFF_BIG() di SQL Server:Apa Bedanya?

  3. Dapatkan daftar tanggal antara dua tanggal menggunakan fungsi

  4. Cari nama kolom di semua database

  5. Menemukan Induk Tingkat Teratas di SQL