SQL根据记录中的其他字段创建字段

问题描述:

我想根据另一个字段中的数据在我的sql查询中创建一个字段。例如: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语句。我不知道如何做到这一点,所以我会很感激任何帮助。

+0

你的模式是什么? – 2012-01-11 18:23:23

这是一个“解决方案”,还有更多。

您可以创建一个名为“人”组成的名字,姓氏和籍贯的一个表(我想你可能有一个表的话)并称为“CityToState”与城市和国家的查找表。

装满适当的数据查找表(它会是相当大的,我敢肯定),并发出查询

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

这应该给你正确的数据,以NULL返回的状态,如果在查找表中不存在该城市。

基本上,这样做是从Person获取所有数据并将其与CityToState中的行逐行连接,其中HomeTown与City相同。即使CityToState中没有匹配的行,“左”部分意味着它应该从左表(Person)返回行。

+0

感谢您的帮助 - 精美的工作! – 2012-01-13 19:52:10

查找你正在使用的数据库(你没有在问题中说明)的computed column。这里是关于SQL Server的Computed Columns的信息。

但是,我认为你应该使用不同的设计。如果您正在查找基于家乡的状态,则外键就足够了,不需要复制数据。

+0

该问题询问如何“在我的sql查询中创建一个字段”,而不是表中的永久域。我认为他们只需要加入。 – 2012-01-11 18:29:15

+0

@马丁史密斯,你的猜测和我一样好。 – 2012-01-11 19:03:52