2012-01-11 96 views
0

我想根據另一個字段中的數據在我的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

回答

1

這是一個「解決方案」,還有更多。

您可以創建一個名爲「人」組成的名字,姓氏和籍貫的一個表(我想你可能有一個表的話)並稱爲「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

0

查找你正在使用的數據庫(你沒有在問題中說明)的computed column。這裏是關於SQL Server的Computed Columns的信息。

但是,我認爲你應該使用不同的設計。如果您正在查找基於家鄉的狀態,則外鍵就足夠了,不需要複製數據。

+0

該問題詢問如何「在我的sql查詢中創建一個字段」,而不是表中的永久域。我認爲他們只需要加入。 – 2012-01-11 18:29:15

+0

@馬丁史密斯,你的猜測和我一樣好。 – 2012-01-11 19:03:52

相關問題