#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. Проблема в том, что дизайн исправлен, так как это существующая база данных. Так что мне просто нужно попытаться найти способ сделать это.