0

別のフィールドのデータに基づいて、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

「State」列は、ルックアップテーブルまたはif/elseステートメントから取得できます。これを行う方法がわからないので、助けていただければ幸いです。

4

2 に答える 2

1

これは1つの「解決策」であり、さらに多くの解決策があります。

FirstName、LastName、Hometownで構成される「Person」という1つのテーブル(すでにそのテーブルがあると思います)と、CityとStateを含む「CityToState」というルックアップテーブルを作成できます。

ルックアップテーブルに適切なデータを入力し(かなり大きくなると思います)、クエリを発行します

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

これにより、正しいデータが得られ、ルックアップテーブルに都市が存在しない場合は州にNULLが返されます。

基本的に、これはPersonからすべてのデータを取得し、HomeTownがCityと同じであるCityToStateの行と行ごとに結合することです。「左」の部分は、CityToStateに一致する行がない場合でも、左のテーブル(Person)から行を返す必要があることを意味します。

于 2012-01-11T18:31:12.500 に答える
0

使用しているデータベースを検索しcomputed columnます(質問には記載されていません)。SQLServerの計算列に関する情報は次のとおりです。

ただし、別のデザインを使用する必要があると思います。出身地に基づいて州を検索する場合は、外部キーで十分であり、データを複製する必要はありません。

于 2012-01-11T18:22:29.673 に答える