Выберите динамические столбцы с именами из другой таблицы

#sql #alias #dynamic-columns

Вопрос:

У меня есть 2 таблицы, одна из которых содержит идентификаторы и атрибуты данных, а другая содержит описания атрибутов.

Что мне нужно сделать, так это прочитать идентификатор и все столбцы атрибутов (должны быть динамическими, так как позже они могут добавить дополнительные атрибуты), но с описаниями из таблицы 2 в качестве заголовков столбцов. (ПРИМЕЧАНИЕ: Атрибуты не имеют похожих имен, поэтому я не могу просто прочитать, где имя столбца начинается с «Attr» или чего-то еще).

Таблица 1:

 ID ID_Description Col1 aAttr1 xAttr2 yAttr3 zAttr4 1 First Thing Blah 103 Gtr A1  2 Second Thing Blah 52 Hte B2 U123 3 Third Thing Blah 17 xxx xx xxx  

Таблица 2

 Attr_ID Attr_Desc aAttr1 Site xAttr2 Area yAttr3 Rack zAttr4 Shelf  

Поэтому мне нужно извлечь идентификатор плюс все столбцы из таблицы 1, в которых есть запись в столбце Attr_ID таблицы 2, и заменить заголовки столбцов для этих столбцов Attr записью Attr_Desc из таблицы 2:

 ID Site Area Rack Shelf 1 103 Gtr A1  2 52 Hte B2 U123 3 17 xxx xx xxx  

Любые указания будут с благодарностью приняты. Спасибо, что посмотрели.

** Редактировать ** Я знаю, что могу использовать поиск INFORMATION_SCHEMA.COLUMNS для получения имен столбцов, но я не знаю, как (или даже могу ли я) включить это в общую инструкцию SELECT, а затем заменить имена столбцов описаниями из таблицы 2:

 SELECT [Column_Name] FROM INFORMATION_SCHEMA.COLUMNS  WHERE TABLE_NAME = N'Table1'  and Column_Name in (select Attr_ID from [dbo].[Table2])  

Комментарии:

1. Возможно, потребуется изменить дизайн вашей базы данных, потому что вы не можете сделать это напрямую без использования динамического SQL, что означает написание кода для создания кода SQL.

2. Проблема в том, что дизайн исправлен, так как это существующая база данных. Так что мне просто нужно попытаться найти способ сделать это.