Как я могу превратить имя столбца в значение результата в SQL Server? - PullRequest
3 голосов
/ 22 марта 2010

У меня есть таблица, которая имеет по существу логические значения в устаревшей базе данных. Имена столбцов хранятся в виде строковых значений в другой таблице, поэтому мне нужно сопоставить имена столбцов одной таблицы со строковыми значениями в другой таблице. Я знаю, что должен быть способ сделать это напрямую с SQL в SQL Server, но это за мной.

Первоначально я думал о том, чтобы использовать PIVOT, но он не включен по умолчанию, и его включение, вероятно, будет сложным процессом, если внести это изменение в производственную базу данных. Я бы предпочел использовать то, что включено по умолчанию.

Я рассматриваю возможность использования COALESCE для перевода логического значения в строку с тем значением, которое мне нужно. Это будет ручной процесс.

Я думаю, что я также буду использовать переменную таблицы, чтобы вставить результаты первого запроса в эту переменную и использовать эти результаты для выполнения второго запроса. У меня все еще есть проблема с тем, что столбцы находятся в одной строке, поэтому я хотел бы легко повернуть значения, чтобы имена столбцов в наборе результатов были представлены в виде строк. Но если бы я мог легко это сделать, я мог бы легко написать запрос с помощью дополнительного выбора.

Любые советы приветствуются.

Ответы [ 5 ]

1 голос
/ 06 апреля 2010

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

1 голос
/ 22 марта 2010

Проверка Sysobjects и SysColumns в SQL Server. Это две таблицы SQL, в которых указаны имена таблиц в вашей БД и имена столбцов, которые идут вместе с этой таблицей.

Системное представление INFORMATION_SCHEMA.COLUMNS также даст вам то, что вы хотите.

0 голосов
/ 07 апреля 2010

Например, у меня есть таблица STATEtbl с 3 столбцами, и я хочу получить все имена столбцов этой таблицы в виде значений ROW ... Я использую приведенный ниже запрос

Select SC.name as Columns from Syscolumns SC
Join Sysobjects SO On SC.id = SO.Id
where Object_name(SO.Id) = 'STATEtbl'

Результат запроса:

Columns
--------
State
StateCode
StateFullName
0 голосов
/ 24 марта 2010

Я не совсем уверен, что понимаю, как в настоящее время составляется ваш дизайн (не могли бы вы опубликовать пример?), Но представление information_schema.columns даст вам таблицу, содержащую все имена столбцов в виде строковых значений. Если вы присоединитесь ко второму столу против этого, я думаю, вы, вероятно, получите то, что вам нужно.

0 голосов
/ 23 марта 2010

Если вас устраивает .Net, вы можете просто написать собственный сохраненный процесс на выбранном вами языке и вместо этого манипулировать данными в коде.

Вот ссылка, чтобы начать CLR Хранимые процедуры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...