SQL Создать поле на основе другого поля в записи - PullRequest
0 голосов
/ 11 января 2012

Я хотел бы создать поле в моем запросе sql на основе данных в другом поле. Например:

First Name  Last Name  Hometown      State (created column based on Hometown)
Phil        Smith      Brooklyn      NY
Bill        Jones      Manhattan     NY
Abraham     Phillips   Cleveland     OH
Michael     Davis      Cincinnati    OH
William     Brett      Queens        NY

Столбец «Состояние» может быть получен из справочной таблицы или из оператора if / else. Я не уверен, как это сделать, поэтому буду признателен за любую помощь.

Ответы [ 2 ]

1 голос
/ 11 января 2012

Это одно «решение», есть еще много.

Вы можете создать одну таблицу с именем «Person», состоящую из FirstName, LastName и Hometown (я предполагаю, что у вас эта таблица уже может быть) и таблицу поиска с именем «CityToState» с указанием City и State.

Заполните таблицу поиска соответствующими данными (она будет достаточно большой, я уверен) и выполните запрос

select FirstName, LastName, Hometown, State 
    from Person left join CityToState on Hometown=City;

Это должно дать вам правильные данные с NULL, возвращаемым для штата, если город не существует в таблице поиска.

По сути, это происходит для получения всех данных от Person и присоединения к ним, строка за строкой со строкой в ​​CityToState, где HomeTown совпадает с City. «Левая» часть означает, что она должна вернуть строку из левой таблицы (Person), даже если в CityToState нет соответствующей строки.

0 голосов
/ 11 января 2012

найдите computed column для базы данных, которую вы используете (которую вы не указали в вопросе). Вот информация о вычисляемых столбцах SQL Server .

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

...