Question

I would like to create a field in my sql query based on the data in another field. For example:

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

The "State" column could come from a look-up table or in an if / else statement. I'm not sure how to do this, so I would appreciate any help.

Was it helpful?

Solution

This is one "solution", there are many more.

You could create one table called "Person" consisting of FirstName, LastName and Hometown (I presume you may have that table already) and a lookup table called "CityToState" with City and State.

Fill the lookup table with appropriate data (it'll be quite large, I'm sure) and issue the query

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

That should give you the correct data, with NULL returned for the state if the city does not exist in the lookup table.

Basically what this does is to get all data from Person and join it, row by row with the row in CityToState where HomeTown is the same as City. The "left" part means that it should return the row from the left table (Person) even if there is no matching row in CityToState.

OTHER TIPS

look up computed column for the database you are using (which you do not state in the question). Here is info on SQL Server's Computed Columns.

However, I think you should use a different design. If you are looking up the state based on the hometown, a foreign key is enough, no need to duplicate the data.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top