Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wybierz kolumny z jednej tabeli na podstawie nazw kolumn z innej tabeli

Moja poprzednia odpowiedź dotyczyła mysql. Ponieważ od tego czasu tag został zaktualizowany w pytaniu, oto zapytanie dla sql-server-2008 .

Zbuduj listę kolumn z wartości w table_levels , usuń ostatni , , zbuduj ciąg zapytania, aby uzyskać wyniki z table_results , a następnie wykonaj.

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 dla serwera sql

Poprzednia odpowiedź. Działa dla mssql

Zobacz demo dla mysql

Użyj GROUP_CONCAT zrobić ciąg z wartości w table_levels a następnie zbuduj ciąg zapytania, aby uzyskać wyniki z 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. Jak w programie SQL Server wygenerować identyfikator klucza podstawowego automatycznego przyrostu, który składa się z roku , znaku specjalnego i numeru serii sekwencyjnej?

  2. Automatyzacja przetwarzania modelu tabelarycznego baz danych usług Analysis Services (SSAS) w programie SQL Server

  3. Jak sprawdzić stan replikacji SQL za pomocą T-SQL?

  4. Zmień typy kolumn w ogromnej tabeli

  5. Jak wybrać TOP 5 PROCENT z każdej grupy?